資料結構與演算法 插入排序

2021-10-04 22:34:48 字數 991 閱讀 6430

插入排序:

時間複雜度:o(n^2)

空間複雜度:o(1)

效能測試:

用選擇排序做對比。

10k 個隨機數字排序:

插入排序        :       0.251472 s

插入排序優化版 : 0.076234 s

選擇排序 : 0.114651 s

10k 個接近有序數字排序:

插入排序        :       0.007583 s

插入排序優化版 : 0.002242 s

選擇排序 : 0.114229 s

基本思路:

把當前這個元素放在前面合適的位置上。

當前這個元素比前面的小,和前面的交換,發現交換後還比前面的小,繼續交換,當前元素為第乙個或者不比前面的元素小了就停止。

void

insertsort

(t arr,

int n)

}}

優化:

比如:4 3 5 6 2 1

當前元素 4,原地不動。

當前元素 3,應該放在 4 的前面:3 4 5 6 2 1

當前元素 5,不動。

當前元素 6,不動。

當前元素 2,應該放在 3 的前面:2 3 4 5 6 1

當前元素 1,應該放在 2 的前面:1 2 3 4 5 6

優化版在每次只發生一次交換,所以比基礎版效率高。

void

insertsort

(int arr,

int n)

arr[j]

= e;

}}

eof

資料結構與演算法 插入排序

將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料 插入排序分為兩種 直接插入排序和希爾排序 插入排序與打撲克時整理手上的牌非常類似。摸來的第1張牌無須整理,此後每次從桌上的牌 無序區 中摸最上面的1張並插入左手的牌 有序區 中正確的位置上。為了找到這個正確的位置,須自左向...

演算法與資料結構 插入排序

例如 給定乙個無序陣列int arr n代表集合陣列的長度,給出乙個演算法將陣列arr按照從小到大的順序進行排列。插入排序 看當前位置i的值是否比它前乙個數小,如果小就與前面的數交換位置。public static void insertionsort int arr,int n public st...

資料結構與演算法 插入排序

一 排序的相關概念 1 排序 將任意序列的資料元素,重新排列成按關鍵字有序 遞增有序或遞減有序 的序列過程。2 穩定性 若在排序過程中,序列的兩個關鍵字值相同的記錄,在排序結束後,相對位置不發生改變,則稱所用的排序方法為穩定的。3 排序方法的兩個效能指標 時間複雜度和空間複雜度。二 插入排序 1 基...