【算法-排序之三】插入排序
插入排序是一種簡單的排序算法,這是一種從小範圍到大範圍的遞歸思想,這種思想類似於數學推導中的遞歸,首先在最小規模n(1個數的隊列)滿足要求,再考慮n+1時需要的操作,遞歸直到最終的結果。當問題規模很大無從下手時,在問題最小規模點思考,然後逐漸遞加,不失爲一個很好的選擇。
1.插入排序InsertSort
核心:以一個人爲初始序列,從第二個人開始每次將一個人插入該隊列中
明白了插入排序的核心,你能輕易理解插入排序的步驟:
1.將第一個數作爲起始序列
2.將下一個數插入序列,
3.直到所有數全部插入序列,得到完整有序結果
以3爲起始序列,分成如下
將9插入左邊的序列
將5插入左邊的序列
左邊的有序序列會慢慢將右邊的序列全部包含,最後左邊的序列便是我們需要最終有序結果。需要注意的是,在插入數時,需要根據插入數的大小找到相應的插入位置。
下面是可複製代碼:
2.時間複雜度
O(n*2),插入排序的時間複雜度分析較爲複雜,有興趣可以探究一下。
3.空間複雜度
一個額外交換空間,O(1)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.