#之前的那个快速排序法符号太难看,不好理解,现在修正一下
def quickSort(arr, start, end):
tmp = arr[start] #把列表的第一个元素用一个指针指着
p1 = start #p1,p2分别在一头一尾
p2 = end
if(start < end):
while(p1 < p2):
while(p1 < end and arr[p1] <= tmp):#找到比tmp大的元素停下来
p1 += 1
while(p2 >= start and arr[p2] > tmp):#找到不大于tmp的元素停下来
p2 -= 1
if(p1 < p2):
arr[p1], arr[p2] = arr[p2], arr[p1]
arr[p2], arr[start] = arr[start], arr[p2]#交换start位置和p2所指元素
for i in range(len(arr)):
print(arr[i], end = " ")
print()
quickSort(arr, start, p2-1)
quickSort(arr, p2+1, end)
else:
return arr
arr = [26, 3, 38, 1, 67, 8, 55, 14, 43, 18]
print("初始数组顺序为:", arr)
# sortedArr = quickSort(arr, 0, len(arr)-1)
quickSort(arr, 0, len(arr)-1)
print("排序后的数组顺序为:", arr)
# print("排序后的数组顺序为:", sortedArr)
接下来打印出每次双指针遍历以后的排序结果以及最终的排序结果.