
C++ Придумать два массива натуральных чисел (первый – близки по значению и с повторениями, второй
– далеки и без повторений). Построить быстрый алгоритм на C++ и выполнить сортировку придуманных двух массивов быстрым методом. чем легче код тем лучше (пожалуйста не списывайте с интернета, это очень важно)

Ответы на вопрос

Ответ:
#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
Обратите внимание, что первый массив содержит повторяющиеся элементы, а второй массив не содерж



Хорошо, давайте создадим два массива и выполним сортировку с использованием быстрой сортировки (quicksort) на C++.
cpp#include <iostream>
#include <vector>
#include <random>
// Функция для быстрой сортировки
void quicksort(std::vector<int>& arr, int left, int right) {
if (left < right) {
int pivot = arr[left + (right - left) / 2];
int i = left, j = right;
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
std::swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j)
quicksort(arr, left, j);
if (i < right)
quicksort(arr, i, right);
}
}
int main() {
// Создаем два массива
std::vector<int> arr1 = {5, 2, 8, 3, 5, 8, 1, 9, 4}; // Близкий с повторениями
std::vector<int> arr2 = {7, 3, 1, 9, 2, 4, 8, 6, 5}; // Далекий без повторений
// Сортируем оба массива
quicksort(arr1, 0, arr1.size() - 1);
quicksort(arr2, 0, arr2.size() - 1);
// Выводим отсортированные массивы
std::cout << "Отсортированный массив 1: ";
for (int num : arr1) {
std::cout << num << " ";
}
std::cout << std::endl;
std::cout << "Отсортированный массив 2: ";
for (int num : arr2) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
В этом примере, мы используем функцию quicksort
для сортировки массивов arr1
и arr2
. Массив arr1
содержит близкие значения с повторениями, а массив arr2
- далекие значения без повторений. Код минималистичен и выполняет поставленную задачу.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili