def quick_sort(alist, fitst, last):
if first >= last:
return
mid_value = alist[first]
low = first
high = last
while low < high:
# high左移
while low < high and alist[high] >= mid_value:
high -= 1
alist[low] = alist[high]
while low < high and alist[low] <= mid_value:
low += 1
alist[high] = alist[low]
#从循环退出时,low == high
alist[low] = mid_value
quick_sort(alist, first, low-1)
quick_sort(alist, low+1, last)
最优时间复杂度:O(nlogn)
最坏时间复杂度O(n^2)