python - 快速排序代码中的问题

标签 python python-3.x sorting quicksort

我的快速排序代码有问题。我是编码和 python(python 3.6) 的新手,任何帮助将不胜感激。我在网上看到了快速排序的几种实现,但我想弄清楚我的代码到底出了什么问题。我将我的代码粘贴在下面:

def Partition(A):
    q = A[0]
    i = 1
    for j in range(1, len(A)):
        if A[j] < q:
            A[j], A[i] = A[i], A[j]
            i = i + 1
    A[0], A[i - 1] = A[i - 1], A[0]
    return i - 1

def QuickSort(A):
    if len(A) <= 1:
        return A
    else:
        q = Partition(A)
        QuickSort(A[ : q])
        QuickSort(A[q + 1 : ])
        return A

A = [7, 5, 4, 1, 3, 6, 2, 8]
Sorted = []
Sorted = QuickSort(A)
print(Sorted)

对于上面的输入,我得到输出 [2, 5, 4, 1, 3, 6, 7, 8],而不是按升序获取排序列表。

最佳答案

这些尝试对 A复制部分进行排序:

    QuickSort(A[ : q])
    QuickSort(A[q + 1 : ])

他们返回一些东西,但是你忽略了他们返回的东西,所以它丢失了。您应该将它们的结果写回A:

    A[ : q] = QuickSort(A[ : q])
    A[q + 1 : ] = QuickSort(A[q + 1 : ])

进行此更改后,您的结果将是预期的[1, 2, 3, 4, 5, 6, 7, 8]

关于python - 快速排序代码中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47800782/

相关文章:

python - 我不知道如何使用 "#' s"和 "*' s"在 python 中制作这个形状

python - Python2 PriorityQueue 和 Python3 PriorityQueue 的 put 方法有什么区别吗?

python - Pandas Groupby : 'observed' parameter with multiple categoricals

swift - 根据 bool 属性对数组进行排序

c# - 使用 linq 对 XMLDocument 进行排序

python - 在 python 中加载 Tensorflow Lite 模型

python - 按值拆分列表并保留分隔符

c++ - 如何通过将第一个插入保持在其位置来对我插入列表中的其余元素进行排序?

python - Django:没有名为应用程序的模块

python - 从 python 字典创建边缘列表