快速排序动图展示:
def quick_sort(alist,first,last):
"""快速排序"""
if first>=last:
return
# 如果起始位置大于或等于尾部位置,说明排序完成
mid_value=alist[first]
# 把列表头设置成对比值
low = first
#要进行递归调用,所以头部指针要进行传参
high=last
#要进行递归调用,所以尾部指针要进行传参
while low<high:
#只要头部指针小于尾部指针,就要进行排序
while low<high and alist[high]>=mid_value:
#只要头部指针小于尾部指针,尾部指针所指的值不小于对比值mid_value,就一直循环
high -= 1
#尾部指针要向前移动
alist[low] = alist[high]
#如果头部指针指向的值大于尾部指针指向的值,并且尾部指针的值小于对比值mid_value,就将尾部指针所指向的值指向头部指针
while low<high and alist[low]<mid_value:
#只要头部指针小于尾部指针,头部指针所指的值小于对比值mid_value,就一直循环
low += 1
#s头部指针向后移动
alist[high]=alist[low]
#如果头部指针指向的值大于尾部指针指向的值,并且头部指针的值大于对比值mid_value,就将头部指针所指向的值指向尾部部指针
alist[low]=mid_value
#将对比值mid_value的值指向头部指针
#从头部指针的位置将列表拆分,递归调用,重新排序
quick_sort(alist,first,low-1)
quick_sort(alist,low+1,last)