簡單插入排序的基本思想:對於原待排序記錄中的第i(1<=i<=n-1)個元素ki,保證其前面的i個元素已經是有序的,要在這前i個元素(k0--ki-1)中找到合適的位置將第i個元素插入,具體的方法是:將ki與ki-1,ki-2,.....,k0比較,找到應該插入的位置,從該位置到第i-1個位置的元素後移喲個位置,將空出的位置插入ki。
例項:待排序整形關鍵字序列為0 9 8 7 4 3 2 1 6 5 ,直接排序過程如下:
第一趟(i = 1 ):[0] 9 8 7 4 3 2 1 6 5
第二趟(i = 2 ):[0 9] 8 7 4 3 2 1 6 5
第三趟(i = 3 ):[0 8 9] 7 4 3 2 1 6 5
第四趟(i = 4 ):[0 7 8 9] 4 3 2 1 6 5
第五趟(i = 5 ):[0 4 7 8 9] 3 2 1 6 5
第六趟(i = 6): [0 3 4 7 8 9] 2 1 6 5
第七趟(i = 7): [0 2 3 4 7 8 9] 1 6 5
第八趟(i = 8): [0 1 2 3 4 7 8 9] 6 5
第九趟(i = 9): [0 1 2 3 4 6 7 8 9] 5
第十趟(i = 10) : [0 1 2 3 4 5 6 7 8 9]
大功告成;
具體實現演算法:
template void insert_sort(t array,int n)
{ int i,j;
for(i = 1;i= 0;j --)
{if(temp其時間複雜度為o(n^2)量級;為穩定的排序演算法。
排序演算法 直接插入
直接插入排序基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1.i 1 中,生成含n個記錄的有序區。通過下面乙個排序的例子,來幫助我們理解直接插入排序的思想。我們假設下面無序的序列開頭...
排序演算法 直接插入
簡介 插入排序 insertion sort 是一種簡單直觀且穩定的排序演算法。基本思想是 每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,直到所有待排序記錄全部插入為止。圖示 類似玩撲克牌遊戲時,按序排列紙牌。示例 include using namespace ...
排序演算法1 直接插入排序
排序分為兩大類,內部排序和外部排序,內部排序指的是待排序記錄存放在計算機隨機儲存器中進行排序過程,外部排序指的是待排序記錄數量很大,以致記憶體不能一次容納全部記錄,在排序過程中尚需對外存進行訪問的排序過程,這裡我主要給出內部排序 其中穩定排序 插入排序 氣泡排序 歸併排序 基數排序。直接插入排序 穩...