没办法,快排永远滴神
什么是快速排序
快速排序是优化过的冒泡排序,是处理大量数据排序的最优解。如果你体会过二分法查找妙处,相信你一定能很快上手快速排序,因为快速排序与二分法查找有着异曲同工之妙。
原理
选择一个基数,一般选择数组头,然后新建两个指针,left,right。
right指针下的是2比left指针下的5小,那么两个交换位置,接着left指针向右移动
由于1、3都比5小,直接忽略
此时left指针下的8比right指针下的5大,交换位置
接着right指针向左移动
注意:指向基数的指针是不移动的
最后基数额左边全是小于基数的,基数的右边全是大于基数的。
接着递归
是不是很简单呢?
附上python的代码
代码
numbers=[4,5,1,21,66,6,7,9,15,44,60,16,3,77,51,13,99,52]
left=0
right=len(numbers)-1
def con(left,right):
global numbers
t = 1
a=left
b=right
while left<right:
if numbers[left]<numbers[right]:
if t==1:
right-=1
else:
left+=1
elif numbers[left]>=numbers[right]:
numbers[left],numbers[right]=numbers[right],numbers[left]
t=1-t
left+=1-t
if left-a>=2:
con(a,left-1)
if b-right>=2:
con(right+1,b)
con(left,right)
制图不易,点个赞支持一下吧