C++
Придумать два массива натуральных чисел (первый – близки по значению и с повторениями, второй – далеки и без повторений). Построить быстрый алгоритм на C++ и выполнить сортировку придуманных двух массивов быстрым методом.
чем легче код тем лучше
(пожалуйста не списывайте с интернета, это очень важно)
Answers & Comments
Ответ:
#include <iostream>
#include <algorithm>
using namespace std;
// Функция для быстрой сортировки массива
void quicksort(int *arr, int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j) {
quicksort(arr, left, j);
}
if (i < right) {
quicksort(arr, i, right);
}
}
int main() {
// Создаем первый массив
int array1[] = {1, 2, 2, 3, 4, 5, 6, 6, 7, 8};
int n1 = sizeof(array1) / sizeof(array1[0]);
// Создаем второй массив
int array2[] = {9, 3, 5, 2, 8, 7, 1, 6, 4};
int n2 = sizeof(array2) / sizeof(array2[0]);
// Сортируем первый массив
quicksort(array1, 0, n1 - 1);
// Сортируем второй массив
quicksort(array2, 0, n2 - 1);
// Выводим отсортированные массивы на экран
cout << "Sorted array1: ";
for (int i = 0; i < n1; i++) {
cout << array1[i] << " ";
}
cout << endl;
cout << "Sorted array2: ";
for (int i = 0; i < n2; i++) {
cout << array2[i] << " ";
}
cout << endl;
return 0;
}
Объяснение:
Этот код использует функцию quicksort для сортировки массивов. Функция quicksort рекурсивно разбивает массив на две части вокруг опорного элемента (pivot), затем сортирует эти две части отдельно друг от друга. Это продолжается до тех пор, пока весь массив не будет отсортирован.
Пример созданных массивов:
Первый массив: {1, 2, 2, 3, 4, 5, 6, 6, 7, 8}
Второй массив: {9, 3, 5, 2, 8, 7, 1, 6, 4}
Отсортированные массивы:
Sorted array1: 1 2 2 3 4 5 6 6 7 8
Sorted array2: 1 2 3 4 5 6 7 8 9
Обратите внимание, что первый массив содержит повторяющиеся элементы, а второй массив не содерж