八大排序算法的Python實現__3__插入排序

個人技術博客地址:http://songmingyao.com/


原理

  • 在列表左側構建有序序列
  • 一開始將第一個元素視為有序序列
  • 對于未排序序列,則將未排序序列中的元素依次從右到左與已排序序列中的元素做比較
  • 如果未排序元素小于當時比較的已排序元素,則將該已排序元素右移
  • 如果未排序元素大于當時比較的已排序元素,則說明該元素已插入到合適位置,此輪循環結束
  • 以此類推

源碼

def insert_sort(l):
    n = len(l)
    # 要排序的元素
    for i in range(1, n):
        # 已排序的元素
        for j in range(i, 0, -1):
            if l[j] < l[j-1]:
                l[j], l[j-1] = l[j-1], l[j]
            else:
                break


if __name__ == '__main__':
    l = [6, 5, 2, 8, 9, 4, 1, 0, 3, 7]
    print(l)
    insert_sort(l)
    print(l)

時間復雜度

  • 最優時間復雜度:O(n)
  • 最壞時間復雜度:O(n2)
  • 穩定性(多個元素等值的情況下是否會破壞原有順序):穩定
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 該系列文章主要是記錄下自己暑假這段時間的學習筆記,暑期也在實習,抽空學了很多,每個方面的知識我都會另起一篇博客去記...
    Yanci516閱讀 12,282評論 6 19
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,222評論 0 52
  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,746評論 0 15
  • 排序的基本概念 在計算機程序開發過程中,經常需要一組數據元素(或記錄)按某個關鍵字進行排序,排序完成的序列可用于快...
    Jack921閱讀 1,461評論 1 4
  • 如果生活像電影一樣,那我的2016叫格局逆襲。 本年度最杰出成就:買了帶地的大房子 ,小房子出租成投資房。 本年度...
    水在瓶4閱讀 279評論 0 0