Различия
Показаны различия между двумя версиями страницы.
— | bystraja_sortirovka [2025/07/06 12:38] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Быстрая сортировка ====== | ||
+ | |||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Пример реализации на С/С++ быстрой сортировки.) | ||
+ | }} | ||
+ | |||
+ | **Быстрая сортировка** (англ. quicksort), часто называемая **qsort** по имени реализации в стандартной библиотеке языка Си — широко известный алгоритм сортировки, | ||
+ | |||
+ | < | ||
+ | Использование функцию qsort из библиотеки stdlib.h | ||
+ | |||
+ | qsort( указатель_на_массив, | ||
+ | </ | ||
+ | *** функция_сравнения_элементов** - является указателем на процедуру, | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | Метод основан на разделении массива на части. Общая схема такова: | ||
+ | |||
+ | - Из массива выбирается некоторый опорный элемент a[i]. | ||
+ | - Запускается функция разделения массива, | ||
+ | - Если в подмассивасивах более двух элементов, | ||
+ | - В конце получится полностью отсортированная последовательность. | ||
+ | Рассмотрим алгоритм более детально. | ||
+ | |||
+ | Делим массив пополам. | ||
+ | Входные данные: | ||
+ | |||
+ | - Введем два указателя: | ||
+ | - Будем двигать указатель i с шагом в 1 элемент по направлению к концу массива, | ||
+ | - Затем аналогичным образом начнем двигать указатель j от конца массива к началу, | ||
+ | - Далее, если i <= j, меняем a[i] и a[j] местами и продолжаем двигать i,j по тем же правилам. | ||
+ | - Повторяем шаг 3, пока i <= j. | ||
+ | |||
+ | ====== Пример реализации на С/С++ ====== | ||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | template <class T> | ||
+ | |||
+ | void quickSortR(T a[], long N) { | ||
+ | // На входе - массив a[], a[N] - его последний элемент. | ||
+ | |||
+ | long i = 0, j = N; // поставить указатели на исходные места | ||
+ | T temp, p; | ||
+ | |||
+ | p = a[ N>>1 ]; // центральный элемент | ||
+ | |||
+ | // процедура разделения | ||
+ | do { | ||
+ | while ( a[i] < p ) i++; | ||
+ | while ( a[j] > p ) j--; | ||
+ | |||
+ | if (i <= j){ | ||
+ | temp = a[i]; | ||
+ | a[i] = a[j]; | ||
+ | a[j] = temp; | ||
+ | i++; | ||
+ | j--; | ||
+ | } | ||
+ | |||
+ | }while ( i<=j ); | ||
+ | |||
+ | |||
+ | // рекурсивные вызовы, | ||
+ | if ( j > 0 ) quickSortR(a, | ||
+ | if ( N > i ) quickSortR(a+i, | ||
+ | } | ||
+ | |||
+ | void main(){ | ||
+ | srand(time(NULL)); | ||
+ | const long SIZE=10; | ||
+ | int ar[SIZE]; | ||
+ | |||
+ | // до сортировки | ||
+ | for(int i=0; | ||
+ | ar[i]=rand()%100; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | quickSortR(ar, | ||
+ | |||
+ | // после сортировки | ||
+ | for(int i=0; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | } | ||
+ | </ | ||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга