希爾排序的基本思想是:先將待排序表分割成若干形如l[i,i+d,i+2d,···,i+kd]的子表,分別進行直接插入排序,當整個表中的元素有序的時候,再對全體記錄進行一次直接插入排序。
時間複雜度:o(n²)
穩定性:不穩定
適用性:僅適用於順序表
下面投放希爾排序的**
#include#include#include#define maxsize 50
typedef structseqlist;
//建立順序表
void createtable(seqlist &l)
void shellsort(seqlist &l,int n){
//對順序表做希爾排序,本演算法和直接插入排序相比做了以下修改
//1,前後記錄位置的增量是dk,不是1
int dk,i,j,temp;
for(dk=n/2 ; dk>=1; dk = dk/2){ //步長變化
資料結構(排序) 希爾排序
希爾排序 希爾排序又稱縮小增量排序,是1959年由d.l.shell提出來的。演算法描述 1 先取定乙個小於n的整數gap1作為第乙個增量,把整個序列分成gap1組。所有距離為gap1的倍數的元素放在同一組中,在各組內分別進行排序 分組內採用直接插入排序或其它基本方式的排序 2 然後取第二個增量ga...
資料結構 排序(希爾排序)
希爾排序法 插入排序公升級版 include include include include 強調 網上,書上的希爾排序法都有問題 希爾排序並非按乙個增量d,將乙個陣列分成若干小的陣列,對每個陣列進行插入排序,真正的希爾排序步驟 第一步,通過業界常規 d 陣列長度 3 1 求出增量d 第二步 取陣列...
資料結構 希爾排序!!!
希爾排序是將一組資料進行分組,再將分組的資料進行排序,這樣資料就會逐漸的趨向有序,當分組的個數為1的時候將整個陣列排序一遍,那麼整個陣列就排序好了。基本思想 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基...