"""
快速排序
平均O(nlog2n) 最好O(nlog2n)
最坏O(n^2)
空间复杂度O(nlog2n)
不稳定
"""
def QuickSort(lst):
def partition(arr, left, right):
key=left
while left<right:
while left<right and arr[right] >= arr[key]:
right -=1
while left<right and arr[left] <= arr[key]:
left +=1
(arr[left],arr[right])=(arr[right],arr[left])
(arr[key],arr[left]) = (arr[left],arr[key])
return left
def quicksort(arr,left,right):
if left >= right:
return
mid = partition(arr,left,right)
quicksort(arr,left,mid-1)
quicksort(arr,mid+1,right)
n = len(lst)
if n<=1:
return lst
quicksort(arr,0,n-1)
return lst
arr=[1,3,2,1,8,5]
arr=QuickSort(arr)
print(arr)