思想:通过一趟排序将要排序的数据分割成独立的两部分,然后再按照此方法对这两部分数据分别进行快速排序
整个排序可以递归进行
代码:
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:
high-=1
alist[low]=high
while low<high and alist[low]<mid_value:
low+=1
alist[high]=alist[low]
#从循环退出时,low==gigh
alist[low]=mid_value
#对low左边的序列进行快速排序
quick_sort(alist,first,low-1)
#对low右边的序列进行快速排序
quick_sort(alist,low+1,last)
最优时间复杂度:O(nlogn)
最差时间复杂度:O(n*n)
稳定性:不稳定