我正在尝试基于我在类中读到的伪代码在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发布于 2015-06-12 05:39:31
您不返回任何内容,只创建新的列表,但不使用它们。返回新列表:
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])https://stackoverflow.com/questions/30791863
复制相似问题