排序挨個來,今天到插入排序。下面來談談插入排序裡的直接插入排序
解決麻煩的事情,可以先從簡單的 問題入手:咱們先開始兩個數的插入排序。
具體過程:先把要排序的數放到臨時變數裡,然後與第乙個數比較,如果可以插入到第乙個數的位置,然後第乙個數向後移,即把第乙個數放到第二個位置。最後再把第二個數放到第乙個位置。
array[0]=temp; //第二個數放到空位置
}由兩個數推導到一堆數,不可避免的要加上迴圈。
數在陣列元素空間的移位:當臨時變數和陣列元素比較為true時,前一位置的數移入後一位置。最後比較為false時,此時的位置就是要放入的位置。看下圖:
該圖的每一步對應核心**的一次迴圈。意思是說,比較條件為true,進行資料向後移位。到最後乙個條件為false時,執行最後一步,也就是說圖上的第五步。
最後的**:
void main()
; int i,j,k;
for(i=0;i<10;i++)
printf("%d\n",array[i]); //輸出原有的元素
for (i=1;i<10;i++)
array[j]=temp;
}for(i=0;i<10;i++) //輸出最後的排序陣列
printf("%d,",array[i]);
}
直接插入演算法
插入演算法是每次將乙個新資料插入到有序佇列中的合適位置的一種演算法。演算法的詳細過程描述如下 假設有乙個無序佇列r1,r2,r3,rn 1 首先認為r1是有序的,然後將r2,r3,rn依次插入到這個有序佇列的合適位置,因此我們需要乙個外部迴圈 2 我們需要將ri插入到合適位置,ri前面的資料已經是有...
排序演算法 直接插入
直接插入排序基本思想 假設待排序的記錄存放在陣列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 ...