1. 程式人生 > >直接插入排序法(C語言實現)

直接插入排序法(C語言實現)

插入法排序:
通過資料移動,留出合適位置插入順序合適的值,而無須資料交換
步驟:

從第二個元素“i”開始快取準備用於比較,並留出一個空位將空位前的元素“j”拿來與快取值比較不滿足則移動,直到向前找到頭比較的目的是要讓快取值插入後成為從開頭到插入點這個區間中的最值如果快取值向前看不是最值,則往後移動,直到可以讓快取值插入後成為最值時停止將快取值插入到最值位置(即內迴圈下一個將要移動的位置)。

demo:

//從小到大進行排序
insertsort(int *k,int n)             /*直接插入排序*/
{
    int i,j;
    int temp;
    for(i=1;i<n;i++)
    {
        temp = k[i];                //將要比較的值先綬存起來留出一個空位,方便移動
        j = i - 1;
        while(j>=0 && k[j]>temp)    //比較直到出現比temp大的值,或向前找到頭
        {
            k[j+1] = k[j];            //將前面的值往後移
            j--;
        }
        k[j+1] = temp;                 //插在a[j]的後面
    }
}