快排最少的時間複雜度是O(n),平均是O(n logn),最壞O(n^2)。
#quick_sort
array = [1,5,65,23,57,1232,-1,-5,-2,242,100,4,423,2,564,9,0,10,43,64]
def quick_sort(array, left, right):
if left < right:
temp = partition(array, left, right)
quick_sort(array, left, temp-1)
quick_sort(array, temp+1, right)
#得到每一次排序所確定位置的下標
def partition(array, left, right):
well = left#well記錄比軸大的第一個數的下標
for i in range(left, right):
if array[i] < array[right]:#array[right]是軸
array[i], array[well] = array[well], array[i]
well += 1
array[well], array[right] = array[right], array[well]
return well
print(array)
quick_sort(array, 0, len(array)-1)
print(array)
結果:
[1, 5, 65, 23, 57, 1232, -1, -5, -2, 242, 100, 4, 423, 2, 564, 9, 0, 10, 43, 64]
[-5, -2, -1, 0, 1, 2, 4, 5, 9, 10, 23, 43, 57, 64, 65, 100, 242, 423, 564, 1232]