from typing import List
defquick_sort(arr: List, left, right)-> List:"""
快速排序是对冒泡排序的改进,核心思想是找到一个中值点pivot,然后将小于等于pivot的放在pivot的左边,大于pivot的放在右边,一直递归到无法拆分pivot点。
:param arr:
:return:
"""
pivot =(left + right)//2
pivot_value = arr[pivot]
l = left
r = right
while l < r:while arr[l]< pivot_value:
l +=1while arr[r]> pivot_value:
r -=1
arr[l], arr[r]= arr[r], arr[l]if l == r:breakif arr[l]== pivot_value:
r -=1if arr[r]== pivot_value:
l +=1# 向右递归if l < right:
quick_sort(arr, l +1, right)if r > left:
quick_sort(arr, left, r -1)if __name__ =='__main__':
arr =[4,1,5,7,6,-1,55,-55,666]
quick_sort(arr,0,len(arr)-1)print(arr)