希爾排序 C語言描述

2021-10-07 15:46:10 字數 442 閱讀 6995

下面用個例子來說明一下:

演算法編寫

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...