Python算法之『 簡潔的快速排序』

def quick_sort(arr):
    """
    快速排序(二分法遞歸排序)
    原理:取數組第一個數作爲標誌,小於它的所有數放在一個列表,大於等於它的放在另一個列表,然後遞歸處理這兩個數組。
        遞歸過程中會把列表越分越小,最小的列表中只包含一個數(二分法思想),小列表排好序後組合成一個列表即可。
    時間複雜度:O(nlogn)
    :param arr:
    :return:
    """
    if len(arr) > 1:
        left, right = [], []
        # 確定一個數,把所有小於它的數放在一個數組,把大於等於它的數放在一個數組
        for i in arr[1:]:
            if i < arr[0]:
                left.append(i)
            else:
                right.append(i)
        return quick_sort(left) + [arr[0]] + quick_sort(right) # 遞歸
    else:
        return arr
    


if __name__ == '__main__':
    import numpy
    array = list(numpy.random.randint(0, 50, 20))
    print(array)
    # [0, 20, 0, 45, 36, 10, 20, 27, 33, 32, 47, 40, 16, 11, 3, 37, 19, 49, 41, 3]

    print(quick_sort(array))
    # [0, 0, 3, 3, 10, 11, 16, 19, 20, 20, 27, 32, 33, 36, 37, 40, 41, 45, 47, 49]

 

 

Mr.bai

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章