我已经尝试实现quicksort大约两天了(看起来我的编程技能变得生疏了)我不知道我做错了什么。我正要放弃,所以我想我应该去讨论区咨询一下。
下面是我试图用python实现的代码。但这并没有达到预期的效果。谁能指出我做错了什么?
def QuickSort(A,p,r):
if p < r:
pivotIndex = Partition(A,p,r)
QuickSort(A,p,pivotIndex-1)
QuickSort(A,pivotIndex+1,r)
return A
def Partition(A,p,r):
m = A[p]
i = p+1
for j in range( p+1 , r ):
if A[j] < m:
A[j] , A[i] = A[i] , A[j]
i+=1
A[p], A[i-1] = A[i-1] , A[p]
return i-1
测试输入的输出为:
>>>QuickSort([9,8,7,6,5,4,3,2,1],0,9)
[1, 3, 5, 6, 7, 4, 8, 2, 9]
如果有人能帮助我实现这一点,我将非常感谢。
当做
最佳答案
切片不会返回原始列表的视图;它使用旧列表中的数据生成新列表这意味着对QuickSort
的递归调用不会更改原始列表。
关于python - 实现QuickSort时遇到困难,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17659974/