首页 > 解决方案 > 快速排序的 Python 实现

问题描述

我正在尝试在 python 中实现快速排序,但我根本无法理解以下代码有什么问题:

def partition(myArray, start, end):
    pivot = myArray[end]
    pIndex = start
    for i in range(0, end+1):
        if myArray[i] <= pivot:
            myArray[i], myArray[pIndex] = myArray[pIndex], myArray[i]
            pIndex += 1
    myArray[pIndex], myArray[end] = myArray[end], myArray[pIndex]
    return pIndex

def quicksort(myArray, start, end):
    if start < end:
        pIndex = partition(myArray, start, end)
        quicksort(myArray, start, pIndex-1)
        quicksort(myArray, pIndex+1, end)


exampleArray = [7, 2, 1, 6, 8, 5, 3, 4]
quicksort(exampleArray, 0, len(exampleArray)-1)
print(exampleArray)

显然,在分区函数的 for 循环中超过了最大递归深度。我不确定,但我认为这与 python 不计算 range() 的最后一个条目的方式有关。我已经尝试了每一种组合。

我知道,这可能太具体了,无法在论坛中提问,但我完全被卡住了。任何人都可以看到有什么问题吗?

标签: pythonquicksort

解决方案


推荐阅读