• Предмет: Информатика
  • Автор: n123500m
  • Вопрос задан 4 месяца назад

ТЕРМІНОВО!!!!!!!!!!!!!!!!!!
С++
Відсортувати елементи одновимірного і двовимірного динамічних масивів (сортування простими вставками і швидке сортування) за зростанням (розмірність масивів: 27, 16х18)
Та прописати пояснення до коду

Ответы

Ответ дал: qrtyn5146
1

Вот пример кода на C++, который сортирует элементы одномерного и двумерного динамических массивов (сортировка простыми вставками и быстрая сортировка) по возрастанию:
#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

// функция для генерации случайных чисел

int rand_int(int min, int max)

{

   return min + rand() % (max - min + 1);

}

// функция для вывода элементов массива на экран

void print_array(int* arr, int n)

{

   for (int i = 0; i < n; i++)

   {

       cout << arr[i] << " ";

   }

   cout << endl;

}

// сортировка простыми вставками для одномерного массива

void insertion_sort(int* arr, int n)

{

   for (int i = 1; i < n; i++)

   {

       int temp = arr[i];

       int j = i - 1;

       while (j >= 0 && arr[j] > temp)

       {

           arr[j + 1] = arr[j];

           j--;

       }

       arr[j + 1] = temp;

   }

}

// быстрая сортировка для одномерного массива

void quick_sort(int* arr, int left, int right)

{

   if (left < right)

   {

       int pivot = arr[(left + right) / 2];

       int i = left;

       int j = right;

       while (i <= j)

       {

           while (arr[i] < pivot) i++;

           while (arr[j] > pivot) j--;

           if (i <= j)

           {

               swap(arr[i], arr[j]);

               i++;

               j--;

           }

       }

       quick_sort(arr, left, j);

       quick_sort(arr, i, right);

   }

}

// сортировка простыми вставками для двумерного массива

void insertion_sort_2d(int** arr, int n, int m)

{

   for (int i = 0; i < n; i++)

   {

       for (int j = 1; j < m; j++)

       {

           int* temp = arr[i] + j;

           int* k = arr[i] + j - 1;

           while (k >= arr[i] && *k > *temp)

           {

               *(k + 1) = *k;

               k--;

           }

           *(k + 1) = *temp;

       }

   }

}

// быстрая сортировка для двумерного массива

void quick_sort_2d(int** arr, int left, int right, int column)

{

   if (left < right)

   {

       int pivot = *arr[(left + right) / 2] + column;

       int i = left;

       int j = right;

       while (i <= j)

       {

           while (*arr[i] + column < pivot) i++;

           while (*arr[j] + column > pivot) j--;

           if (i <= j)

           {

               swap(arr[i], arr[j]);

               i++;

               j--;

           }

       }

       quick_sort_2d(arr, left, j, column);

       quick_sort_2d(arr, i, right, column);

   }

}

int main()

{

   srand(time(NULL));

   const int n = 27

Вас заинтересует