排序(插入排序)

2021-08-29 03:55:30 字數 696 閱讀 8391

先給乙個例題:先給定乙個數n,後面緊接著輸入n個數,要求把這些數由小到大排列起來。

這道題其實很簡單,用很多種排序方法都可以做出來,今天剛把插入排序參透了,所以用插入排序來做做看。

#include #include using namespace std;

int main()

a[m+1]=flag; //最後將目標數換到比它小的數之前

}for(int i=0;i現在解釋**的核心,我們可以舉例一串數:3 2 1 6 5

比如說我們的目標數 flag==2,m==0,此時的a[m]==3>flag,可以進行交換,所以進入迴圈,將前面的值賦給後面,這個時候不用擔心後面的值被覆蓋,因為此時後面乙個(目標數)已經被flag記錄下來了,此時a[0]==3,a[1]==3,此時m--,m<0,跳出迴圈,將目標數賦給比它小的數之前,a[0]==2,程式繼續跑,i==2,m==1,此時的目標數flag==1,此時的進入迴圈,察覺到目標數的前面乙個比它要大,所以前面的數往後移,覆蓋後面的數,a[0]==2,a[1]==3,a[2]==3,m--,m此時變成了0,此時前面的數還是比目標數flag要大,所以繼續進行迴圈,a[0]==2,a[1]==2,a[2]==3,m--,m此時變成了-1.不滿足迴圈條件,跳出迴圈,再用目標數將a[0]覆蓋a[0]==1,此時a[0]==1,a[1]==2,a[2]==3,一直用這個程式跑,就可以排序。

初學c,望大佬們指教!

插入排序 折半插入排序

折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...

插入排序 折半插入排序

折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...