#python #sorting #quicksort #partitioning
#питон #сортировка #быстрая сортировка #разделение
Вопрос:
как указано в названии, я столкнулся с проблемой при создании алгоритма быстрой сортировки. Алгоритм может пройти через некоторые виды, если я сделаю свои точки разворота началом и концом arr, что, как я знаю, не является оптимальным. Но даже с этим «трюком» он все равно не работает со случайно сгенерированными массивами. Лично я подозреваю, что опорные точки-это сбой в моем коде, но я не совсем уверен.
import random def quick3(arr): if(len(arr) lt;=1): return arr left = arr[0] right = arr.pop() if left gt; right: left, right = right, left l = [] m = [] h = [] for i in range(len(arr)): if arr[i] lt; left: l.append(arr[i]) if arr[i] gt; right: h.append(arr[i]) if arr[i] gt; left and arr[i] lt; right: m.append(arr[i]) return quick3(l) [left] quick3(m) [right] quick3(h)
Комментарии:
1. Я не любитель Питона (пока?) но, похоже, у вас возникнут проблемы, если у вас будут дубликаты ключей. — Кроме того, меня озадачивает асимметрия настройки
left
vsright
— неpop()
удаляет элемент? (противarr[0]
того, чтобы не делать этого)