【问题标题】:Recursive quicksort only returning result of first recursive call递归快速排序仅返回第一次递归调用的结果
【发布时间】:2015-08-27 19:15:09
【问题描述】:

我正在尝试根据我在课堂上阅读的伪代码在 Python 中实现快速排序,但它不会对列表进行排序。它执行递归并始终返回第一个递归调用的结果(未排序)。谁能解释我做错了什么?

def quick_sort(S):
    n = len(S)
    if n < 2:
        return
    p = S[0]
    L = []
    E = []
    G = []
    for i in range(0,len(S)):
        if S[i] < p:
            L.append(S[i])
        elif p < S[i]:
            G.append(S[i])
        else:
            E.append(S[i])
    quick_sort(L)
    quick_sort(G)
    S=L+E+G

【问题讨论】:

    标签: python quicksort


    【解决方案1】:

    您不会返回任何内容,您只会创建新列表,但不会使用它们。 返回新列表:

    def quick_sort(S):
        n = len(S)
        if n < 2:
            return S
        p = S[0]
        L = []
        E = []
        G = []
        for v in S:
            if v < p:
                L.append(v)
            elif p < v:
                G.append(v)
            else:
                E.append(v)
        return quick_sort(L) + E + quick_sort(G)
    
    print quick_sort([6,4,2,3])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 2020-08-14
      相关资源
      最近更新 更多