"""
1、快速排序法最优时间复杂度:nlog2n == o(nlogn)
2、快速排序最坏的时间复杂度:n**2 === o(n**2),当你每一趟选择的中间值恰好最小(大)
3、快排怎么调优:
想办法选择一个相对靠中间的值作为中间值
1、随机法:每次从列表中随机选择一个值作为中间值;
2、选择列表中第一个值,和最后一个值,和中间一个值,比较这三个只。从三个值中选择一个中间值作为快排的中间值
4、快排是稳定的吗?不稳定的。
"""
def quick_sort(myList,first,last):
if first >= last:
return
mid = myList[first]
start=first
end=last
while start<end:
while start<end and myList[end] >= mid:
end -=1
myList[start] = myList[end]
while start < end and myList[start] <mid:
start += 1
myList[end] = myList[start]
myList[end] = mid
quick_sort(myList,first,start-1)
quick_sort(myList,start+1,last)
if __name__ == '__main__':
l=[89,23,11,99,10,34,56,8]
print(l)
quick_sort(l,0,len(l)-1)
print(l)