下面用個例子來說明一下:
演算法編寫
for
(j =
0; add[j]
>
0; j++
)//依次增量排序
p[k + a]
= temp;
}}
可以看出來,希爾排序是將陣列序列分成若干個子串行,然後再將子串行進行插入排序,等到序列基本有序時,最後進行一次全體插入排序。
不穩定排序
可以從上面的那個例子看出,有兩個相同的數 48,但在最終排完序,之前在陣列後面的48排在了前面,因此希爾排序是不穩定的。
C語言 希爾排序
比較相隔較遠距離 稱為 增量 的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。d.l.shell於1959年在以他名字命名的 排序演算法中實現了這一思想。演算法先將要排序的一組數按某個 增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用乙個較小的增量...
希爾排序(c語言)
希爾排序 取乙個小於n的整數gap gap又叫做步長 通過把所有距離為gap或者gap的倍數的資料放在乙個組裡,對每乙個組進行插入排序,當每個組有序時,這整個序列就接近有序,然後減小gap,繼續上面的操作,gap越小時,預排序完畢越接近有序,當gap等於1時,預排序就相當於直接插入排序。希爾排序分為...
c語言希爾排序
include 陣列的輸出 void output array int data,int n 交換兩個數 void swap int a,int b 往資料裡面插入資料 void insertion sort int data,int n,int increment 希爾排序 void shells...