思路:
1.任取一个元素P(第一个元素),使其归位
2.列表被P分成两部分,左边都小于P,右边都大于P
3.递归完成排序
时间复杂度O(nlogn)
def partition(ls,left,right):
tmp=ls[left]
while left<right:
while left<right and ls[right]>=tmp:
right-=1
ls[left]=ls[right]
while left<right and ls[left]<=tmp:
left+=1
ls[right]=ls[left]
ls[left]=tmp
return left
def quick_sort(ls,left,right):
if left<right:
mid=partition(ls,left,right)
quick_sort(ls,left,mid-1)
quick_sort(ls,mid+1,right)