我已经尝试实现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/

10-12 17:58