演算法導論 插入排序

2021-10-01 01:35:55 字數 585 閱讀 3878

使用範圍:

適用於元素較少的排序。

演算法思想

設陣列a為待排序陣列,從a中第二個元素開始,依次取從左向右取a中的每個元素。以此元素為界將a資料分為兩塊,該元素左邊為已經排序穩定的序列,該元素的右邊為a資料中原始的資料序列。並將該元素插入右邊的序列中,保證元素插入之後的序列依舊是有序的。向後依次取元素,插入右邊序列,直到a中左邊序列的所有元素均有序插入右邊變序列為止。

偽**

for j=2 to a.length

key = a[j]

//insert a[j] into the sorted sequence a[1..j-1]

i = j - 1

while i > 0 and a[i] > key

a[i+1] = a[i]

i = i -1

a[i+1] = key

c++**
int* insertsort(int* a)

a[j+1] = key;

}return a ;

}

演算法分析

該演算法時間複雜度為o(n*n),空間複雜度為1。

演算法導論 插入排序

introduction to algorithms second edition chapter2,insertion sort date 2014 9 14 include include include define max 50 typedef struct sortarr 直接插入排序 i...

演算法導論 插入排序

插入排序應該算是比較好理解的一種了,原理類似於我們打牌的時候,摸牌插入手中的情景。來看一下圖,立刻就明白了 我們將乙個陣列int a 12 看做一副撲克牌,假設陣列有12個數,那麼撲克牌也一共有十二張,放在一起開始 我們先抽一張拿到手上,這時候,我們不需要排序,因為不論哪一張先被我們抽上來,不論大小...

演算法導論 插入排序

對於只有乙個元素的陣列,本身為已序。對於兩個元素的a,認為 a0 為已序,a1為key 若key a0 則將key 放到a0後。若不是,後移a0 對於多個元素的陣列 考慮將key 插入到已序的 a0 aj a0 a1 a2.中,可以將key 與aj a0 逐個比較,並後移,直到遇到乙個比key 小的...