演算法 插入排序

2022-03-12 08:17:41 字數 711 閱讀 4093

以下是插入排序的偽**,只用來表示演算法的核心思想

1   定義乙個陣列a[1

..n],長度為n的序列。使用插入排序演算法,將陣列a進行排序;

23 insertion-sort:4

for j=2

to a.length

5   key =a[j]6//

將a[j] 插入到已經排序的佇列a[1..j-1]

7   i=j-1

8while i>0 and a[i] >key

9   a[i+1] =a [i]

10   i=i-1

11   a[i+1] = key

第一次看這個邏輯,比較難以理解是 從 8 到 11行;

假設陣列a現在是這樣 [*,*,*,x,y,y,y]

* 表示已經排序的數,

x 表示正在進行操作的數,

y 表示未排序的數.

第8-11行就是將x插入到已經排序的序列[*,*,*] 中,由於是新插入乙個元素,所有比x大的元素都會向後順延乙個位置,並且由於i的初始值是j-1,所以即使最大的i再+1,也不過是等於j,總的進行排序的元素個數就是從1到j,沒有超出範圍。第11行的a[i+1]=key,是由於跳出while時,i執行了一次減1操作,所以比實際要插入的位置要小1,因此第11行要進行加1操作.

插入排序演算法

插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...

演算法 插入排序

include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...

插入排序演算法

下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...