當前位置: 妍妍網 > 碼農

Python 插入排序演算法

2024-03-07碼農

Python,學霸

  • 閱讀指南

  • 原理

  • 例項

  • 輸出


  • 原理

    當我們使用插入排序時,從第二個元素開始,我們將當前元素與已經排序好的元素序列進行比較。如果當前元素小於已排序序列中的某個元素,那麽就將這個元素後移一位,為當前元素騰出位置。重復這個過程,直到找到當前元素應該插入的位置,然後將其插入其中。透過這樣的方式,逐步將未排序的元素逐個插入到已排序的序列中,最終完成整個序列的排序。這就好比是在玩撲克牌時,我們將手中的牌逐個插入到已經按照大小順序排好的牌堆中一樣。

    例項


    # 插入排序
    import time
    def print_data(data):
    print('\r'' '.join(['*' * num for num in data]), end='')
    def insertion_sort(data):
    start_time = time.time()
    for i in range(1, len(data)):
    key = data[i]
    j = i - 1
    while j >= 0 and key < data[j]:
    data[j + 1] = data[j]
    j -= 1
    data[j + 1] = key
    #打印排序結果
    print_data(data)
    #增加等待時間
    time.sleep(0.5)
    end_time = time.time()
    #計算排序用時
    sort_time = end_time - start_time
    print("\n插入排序用時:", sort_time)
    data = [5, 9, 1, 4, 6]
    print("原始數據:"' '.join(['*' * num for num in data]))
    insertion_sort(data.copy())

    輸出

    原始數據: ***** ********* * **** ******
     * **** ***** ****** *********
    插入排序用時: 2.004281044006347