快速排序:
快速排序属于高端的排序算法,是不稳定的排序算法,最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,它的内部循环可以在大部分的架构上很有效率地被实现出来。
算法步骤
从数列中挑出一个元素,称为 "基准"
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作
递归地把小于基准值元素的子数列和大于基准值元素的子数列排序
详细过程如下图:
代码:
def zhengxu (data,left,right):
tmp=data[left]
while left < right:
while left<right and data[right]>=tmp:
right-=1
data[left]=data[right]
while left<right and data[left]<=tmp:
left+=1
data[right]=data[left]
data[left]=tmp
return left
def quick_sort(data,left,right):
if left<right:
mid=zhengxu(data,left,right)
quick_sort(data,left,mid-1)
quick_sort(data,mid+1,right)
k=[9,8,7,6,5,4,3,2,1]
quick_sort(k,0,len(k)-1)
print(k)