Вот реализация алгоритма быстрой сортировки на Python:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
Эта реализация принимает массив arrв качестве входных данных и рекурсивно делит его на более мелкие подмассивы на основе выбранного сводного элемента. Затем элементы в подмассивах переставляются таким образом, что все элементы, меньшие, чем ось, располагаются слева, все элементы, равные стержню, находятся посередине, а все элементы, превышающие ось, находятся справа. Затем функция рекурсивно применяет тот же процесс к левому и правому подмассивам, пока не будет отсортирован весь массив.
Вот еще несколько методов, которые можно использовать для реализации быстрой сортировки:
-
Схема разделения Хоара: вместо выбора опорной точки в качестве элемента посередине вы можете использовать схему разделения Хоара, которая выбирает опорную точку в качестве первого элемента массива, а затем использует два указателя для замены элементов.. В некоторых случаях эта схема может быть более эффективной.
-
Случайный выбор опорной точки. Вместо того, чтобы всегда выбирать опорную точку в фиксированной позиции (например, средний или первый элемент), вы можете случайным образом выбирать опорную точку из массива. Это помогает избежать наихудших сценариев, когда массив уже отсортирован или почти отсортирован.
-
Трехстороннее секционирование. В стандартной реализации элементы, равные опорной точке, располагаются посередине. При трехстороннем секционировании элементы, равные опорной точке, размещаются между левым и правым подмассивами, что уменьшает количество рекурсивных вызовов.