Итак, я понимаю, как работает раздел, однако я не понимаю, как работает функция быстрой сортировки. Это код, который я нашел в Интернете, однако, большинство версий довольно похожи. Как функция быстрой сортировки объединяет весь отсортированный список? Я не понимаю, как оператор return возвращает весь отсортированный список, когда разделы делают подмножества списка. Так не должно ли возвращаемое значение быть одним или двумя числами?
То, что я ищу, - это объяснение того, как функция _quicksort()
работает, шаг за шагом. Любая помощь очень ценится!
def partition(xs, start, end):
follower = leader = start
while leader < end:
if xs[leader] <= xs[end]:
xs[follower], xs[leader] = xs[leader], xs[follower]
follower += 1
leader += 1
xs[follower], xs[end] = xs[end], xs[follower]
return follower
def _quicksort(xs, start, end):
if start >= end:
return
p = partition(xs, start, end)
_quicksort(xs, start, p-1)
_quicksort(xs, p+1, end)
def quicksort(xs):
_quicksort(xs, 0, len(xs)-1)