def quickSort(l, left, right):
# 当left < right才成立
if(left < right):
# 选择最左边的数为基准元素
base = l[left]
# 复制能移动的i, j
i = left
j = right
# 当i=j相遇时停止,完成一轮排序的检索
while(i < j):
# 从右边开始移动,直到遇到小于base时停止
while(i < j and base <= l[j]):
j -= 1
# 从左边边开始移动,直到遇到大于base时停止
while(i < j and base >= l[i]):
i += 1
# 交换i,j此时的元素,继续循环
l[i], l[j] = l[j], l[i]
# 交换base和i位置元素,使得base左边都小于base,右边都大于base
# 完成一轮排序
l[left] = l[i]
l[i] = base
# 递归完成左右数组的排序
quickSort(l, left, i-1)
quickSort(l, j+1, right)
l = [23, 1, 3, 7, 99, 45, 34, 3]
quickSort(l, 0, len(l)-1)
for i in l:
print(i)
快速排序实现
最新推荐文章于 2023-04-24 09:24:17 发布