

Quick sort 是这个意思,就输一个列表里面数字排序的方法,然后我要做的程序选定这个pivot支点为中间值(向下取)
以下是我的代码以及出现的问题
def fenzu(sequence):
l = []
r = []
m = []
for i in range(len(sequence)):
p = sequence[(len(sequence) - 1) // 2]
if sequence[i] < p:
l.append(sequence[i])
elif sequence[i] > p:
r.append(sequence[i])
else:
m.append(p)
sequence = l + m + r
return sequence,l,r,m
def quickSort( sequence ):
fenzu(sequence)
sequence,left,right,middle = fenzu(sequence)
if len(left) > 1:
left = fenzu(left)[0]
l,r = fenzu(left)[1],fenzu(left)[2]
while len(l) > 1 or len(r) > 1:
left = fenzu(left)[0]
l,r = fenzu(left)[1],fenzu(left)[2]
print(left,l,r)
if len(right) > 1:
right = fenzu(right)[0]
l,r = fenzu(right)[1],fenzu(right)[2]
while len(l) > 1 or len(r) > 1:
right = fenzu(right)[0]
l,r = fenzu(right)[1],fenzu(right)[2]
print(right,l,r)
sequence = left + middle + right
print(sequence,left,right,middle)
return sequence
print(quickSort([-100, -18, 53, -45, -66, -17, -9, -71, 49, -75]))
里面设置的一些print是为了方便查找问题
现在的问题就是最后right组里死循环,不知道该怎么解决,如图

已经磨了一整天了还是不行,非常感谢回复!