python快排

快排最少的時間複雜度是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]

發佈了43 篇原創文章 · 獲贊 26 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章