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