Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube
Быстрая сортировка. Вариант с указателем
Интерактивная анимация

Первый вариант быстрой сортировки

Реализация быстрой сортировки со следующими аргументами функции: указатель на начало массива и его размер. В предыдущей реализации нумерация элементов подмассива всегда велась относительно начала исходного массива, в рекурсивные вызовы передавались аргументы left и right, обозначающие границы подмассивов.

Как и ранее, подмассив, с которым работает конкретный рекурсивный вызов, выделен чёрным цветом и подчёркнут синей линией. Для большей наглядности показано data[0] (значение самого левого элемента текущего подмассива).

Опорный элемент:

Центральный элемент

Крайний левый элемент

Крайний правый элемент

Случайный элемент

 
function quickSort(data*, size)
{
pivot = data[size / 2];
l = 0, r = size - 1;
while (l <= r)
{
while (l < size && data[l] < pivot)
{
++l;
}
while (r >= 0 && data[r] > pivot)
{
--r;
}
if (l == r && l == 0)
{
++l;
}
if (l == r && l == size - 1)
{
--r;
}
if (l < r)
{
swap(data[l], data[r]);
++l;
--r;
} else {
break;
} }
if (l > 1)
{
quickSort(&data[0], l);
}
if (size - l > 1)
{
quickSort(&data[l], size - l);
} }
16 апреля 2021
алгоритмы интерактив
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Сортировки
Сортировка пузырьком
Сортировка выбором
Гномья сортировка
Сортировка вставками
Сортировка Шелла
Быстрая сортировка
Быстрая сортировка. Вариант с указателем
Пирамидальная сортировка
Также может быть интересным
© MMXI—MMXXIII. RSS. Поддержать сайт
Светлая тема / тёмная тема