插入排序也是一種比較簡單的排序方法,它的基本原理就好似我們打牌過程中摸牌理牌那一環:當你摸到一張牌後將其插入到合適的位置。
插入排序首先定位乙個數(一般從第二個開始),將這個數依次與位於它之前的數進行比較,經過一輪比較,找到它在這些數中適當的位置。然後定位下乙個數,再找到合適的位置,依次進行直到最後乙個數。
例如(5 2 1 4 3),黑體為進行交換的兩數。
第一輪:
([b]2 5[/b] 1 4 3)
第二輪:
(2 [b]1 5[/b] 4 3)
([b]1 2[/b] 5 4 3)
第三輪:
(1 2 [b]4 5[/b] 3)
(1 2 4 5 3)
(1 2 4 5 3)
第四輪:
(1 2 4 [b]3 5[/b])
(1 2 [b]3 4[/b] 5)
(1 2 3 4 5)
(1 2 3 4 5)排序完成
插入排序在資料集較大的時候效率會變的很低,但是它易於實現,處理小型資料集時效率較高,同時也是穩定的,in-place(目前不知道怎麼翻譯)的,它的時間複雜度是о(n²),空間複雜度是о(n)。
插入排序的動畫:
[img]
插入排序的**(遞增):
public void insertion_sort(int data)}}
演算法筆記(第一部分) 排序之白話選擇排序
選擇排序的工作原理 1.找到資料集中的最小元素 2.將最小元素與未排序剩餘元素的第乙個元素交換 3.對剩餘元素進行以上步驟 它的時間複雜度是 n 空間複雜度是 n 同插入排序類似,它也不適用於大資料集。但是它易於實現,也是一種in place的排序演算法。對於穩定性 簡易實現是不穩定的,例如 3 5...
演算法導論第一部分筆記
一 偽 規範總結 1 縮排表示塊的結構 實際上這個我們可以聯想python來理解 2 while 後面跟上end比較好,for to downto 後面則不需要 3 大部分都類似於c的 4 部分操作可以由英文來代替 5 一般不使用全域性變數,復合資料往往組織為物件來進行操作 二 演算法複雜度 跳過 ...
演算法第一部分(1)
1.學習演算法,最好先了解陣列,鍊錶,堆,棧等線性結構 2.對遞迴,遍歷,演算法複雜度有著常識性理解 3.主要包括三方面的知識 線性 主要是排序 樹形結構 圖形結構 定義 選擇排序每次都從剩下的n i 個元素找到最小的數,並與i位置的數交換位置。public void selectionsort t...