原始代码如下:
def QuickSort(lis):
print('新的lis:{}'.format(lis))
n = len(lis)
if n>1:
left = 1
right = n - 1
while left < right:
while lis[left] < lis[0] and left < right:
left += 1
while lis[right] > lis[0] and left < right:
right -= 1
lis[right], lis[left] = lis[left], lis[right]
left += 1
right -= 1
print(left,right)
if left != right:
left -= 1
right += 1
print(left, right)
pivot = lis[0]
if lis[right] < lis[0]:
lis[right], lis[0] = lis[0], lis[right]
else:
lis[left], lis[0] = lis[0], lis[left]
print(lis[:left])
lis = QuickSort(lis[:left]) + [pivot] + QuickSort(lis[right:])
list1 = [6, 8, 7,3]
list1 = [4, 7, 6, 5, 3, 2, 8, 1]
print('原始序列为:{}'.format(list1))
QuickSort(list1)
print('排序后为:{}'.format(list1))
删除递归程序代码:
lis = QuickSort(lis[:left]) + [pivot] + QuickSort(lis[right:])
第一遍快排运行结果是对的:
排序后为:[3, 1, 2, 4, 5, 6, 8, 7]
我想对接下来的【3 1 2】调用递归,也就是QuickSort(lis[:left])
但是,为何最终结果不改变lis的顺序呢??
好奇怪
哪里出错了呢???