插入排序類和大家玩的紙牌遊戲有些類似,在發牌的過程的過程中用右手起的牌,總是和左手裡的排進行比較,然後放在恰當的位置。這就是插入排序的思想。
以陣列為例,其演算法是:
(1)把陣列裡第乙個資料放在a[0]的位置,然後從
a[1]
開始,以後的每乙個數依次和它前面已經排好的數進行比較,然後放在合適的位置。
(2)a[1]可以放在兩個位置乙個是陣列的頭位置,乙個是其現在的位置即
a[1]
(3)從a[2]
開始的資料,就有三種放法了,乙個是陣列的頭位置,乙個是其現在的位置,另乙個是他前面已排好的資料的中間。
(4)若資料插入頭和中間,從插入位置開始,它以後的資料位置依次往後挪動乙個位置這就是插入排序的演算法。
下面是插入排序實現的c++
**。
c++**
#include
using namespace std;
void sort2(int inarray,int insize)
inarray[j+1]=element;
}
}
int main()
;
sort2(a,10);
for(int i=0;i<10;i++)
cout<
return 0;
}
演算法複雜度 n^2
優點:(1) 易於實現
(2) 對於少量資料非常高效
(3) 執行時占用記憶體很少
(4) 演算法穩定
缺點:(1)對於一般數量和大量資料效率非常的低
下面將會介紹希爾排序。
排序 2 插入排序
插入排序 1.想象桌子上有一堆撲克牌,左手中只有一張,數值是2,然後從桌子上拿起一張,數值是5,將這張撲克牌的和左手上的撲克牌進行比較,把較小的哪乙個放到左邊,於是左手上的撲克牌變成兩張,排列從左到右分別是 2,5。2.然後再從桌子上拿起一張牌3,此時左手上已經有兩張牌並且已經排好順序,左邊的小右邊...
排序總結 插入排序
created by liyuanshuo on 2017 3 17.include insertion sort.h a unsort array n total numbers of element in array 1.從第乙個元素開始,該元素可以認為是已經被排序 2.取出下乙個元素,在已經排...
插入排序總結
典型的比較排序演算法 插入排序 堆排序 快速排序。根據演算法導論中出現的先後順序,首先出場的是插入排序 一.原版插入排序偽 1.for j 2 to a.length 為陣列a的長度 2.for i j 1 downto 1 3.if a i a i 1 4.exchange a i with a ...