def PartitionDemo(a,p,r):
x=a[p]
start=p
end=r
while start<end :
while start<end and a[end]>=x :
end-=1
while start<end and a[start]<x :
a[start]=a[end]
start+=1
a[end]=a[start]
a[start]=x
return start
def Partition2(a,low,high):
key = a[low]
while low < high:
while low < high and a[high] >= key:
high -= 1
while low < high and a[high] < key:
a[low] = a[high]
low += 1
a[high] = a[low]
a[low] = key
return low
PartitionDemo
我自己写了,Partition2
我从互联网上复制了它。但是,PartitionDemo
无法正常运行;它不能跳出循环。我认为他们使用相同的逻辑,但Partition2
效果很好。
我尝试用C ++,Java和Python编写Quicksort,但我不明白Python中出了什么问题。
答案 0 :(得分:1)
PartitionDemo有
while start<end and a[start]<x :
Partition2有
while low < high and a[high] < key:
所以看起来你应该
while start<end and a[end]<x :
用结束
替换第二个开头