希爾排序

以前寫過一個希爾排序,不過不是很好理解,並且代碼也很長,這次從C程序設計語言中看到一個比較好理解並且代碼量較少的程序,值得學習一下


//希爾排序
//v[]待排數組,n數組個數
void shell_sort(int v[],int n)
{
    int gap,j,i,temp;

    //從n/2開始進行對摺
    for(gap = n / 2;gap > 0 ; gap /= 2)
    {
        //從gap出開始往後循環,移動位置
        for(i = gap;i < n; i ++)
        {
            //開始和後面的以步長gap向後比較
            for(j = i - gap;j >= 0 &&v[j] > v[j + gap]; j -= gap)
            {
                //交換元素位置
                temp = v[j];
                v[j] = v[j + gap];
                v[j + gap] = temp;
            }
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章