以前寫過一個希爾排序,不過不是很好理解,並且代碼也很長,這次從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;
}
}
}
}