当前位置: 欣欣网 > 码农

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