首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归快速排序仅返回第一次递归调用的结果

递归快速排序仅返回第一次递归调用的结果
EN

Stack Overflow用户
提问于 2015-06-12 05:34:42
回答 1查看 32关注 0票数 0

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2015-06-12 05:39:31

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

代码语言:javascript
复制
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])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30791863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档