[我正在尝试使用https://stackoverflow.com/a/41211360/301513中的代码在python中使用Hoare分区来实现Quicksort。>
但是当我将pivot = a_list[low]
更改为pivot = a_list[high]
时,我就无法使其正常工作!
有人可以帮忙吗?
def quicksort(a_list):
"""Hoare partition scheme, see https://en.wikipedia.org/wiki/Quicksort"""
def _quicksort(a_list, low, high):
# must run partition on sections with 2 elements or more
if low < high:
p = partition(a_list, low, high)
_quicksort(a_list, low, p)
_quicksort(a_list, p+1, high)
def partition(a_list, low, high):
pivot = a_list[low] # changing to pivot = a_list[high] breaks the program
while True:
while a_list[low] < pivot:
low += 1
while a_list[high] > pivot:
high -= 1
if low >= high:
return high
a_list[low], a_list[high] = a_list[high], a_list[low]
low += 1
high -= 1
_quicksort(a_list, 0, len(a_list)-1)
return a_list
[我正在尝试使用Python中的Hoare分区来实现Quicksort,使用https://stackoverflow.com/a/41211360/301513中的代码,但是当我将ivot = a_list [low]更改为pivot = a_list [high] I时。 ..
似乎足以进行更正:
将名称更改为a [],lo,hi,p(枢轴)