python----快速排序的python语法实现
快速排序
快速排序(英语:Quicksort),⼜称划分交换排序(partition-exchangesort),通过⼀趟排序将要排序的数据分割成独⽴的两部分,其中⼀部分的所有数据都⽐另外⼀部分的所有数据都要⼩,然后再按此⽅法对这两部分数据分别进⾏快速排序,整个排序过程可以递归进⾏,以此达到整个数据变成有序序列。
快速排序算法的运作如下:
1)从数列中挑出⼀个元素,称为"基准"(pivot),
2)重新排序数列,所有元素⽐基准值⼩的摆放在基准前⾯,所有元素⽐基准值⼤的摆在基准的后⾯(相同的数可以到任⼀边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3)递归地(recursive)把⼩于基准值元素的⼦数列和⼤于基准值元素的⼦数列排序。
图示实现过程:
语法实现:
def quick_sort(alist,start,end):
"""快速排序"""
if start >= end:
return
mid = alist[start]
left = start
right = end
while left < right:
while left <right and alist[right] >= mid:
right -= 1
alist[left] = alist[right]
while left< right and alist[left] < mid:
left += 1
alist[right] = alist[left]
# 从循环退出后,left与right相遇,即left=right
alist[left] = mid
quick_sort(alist,start,left-1)
quick_sort(alist,left+1,end)
if __name__ == '__main__':
li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(li)
quick_sort(li,0,len(li)-1)
print(li)