我试图在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
答案 0 :(得分:2)
您不会返回任何内容,只会创建新列表,但不能使用它们。 返回新列表:
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])