排序方法總結(3) 希爾排序

2021-06-23 00:38:13 字數 789 閱讀 8828

** 

希爾排序是對插入排序的改進,對中等規模的資料排序效率較高!交換的次數變得少了,效率就高了。

希爾排序的演算法:(1)相距為

k的資料進行比較,若不符合排序的條件,就進行交換。 (2

)第一次比較時

k為陣列長度的一半,以後依次減半,直至

k為零,比較結束。

下面是希爾排序實現的c

**和c++

**。

c**:

#include

void shell(int a,int n)

a[j+k]=x;                              

}                  

k=k/2;           

}      

} int main()

c++**:

#include

void shell(int a,int n)

a[j+k]=x;                              

}                  

k=k/2;           

}      

} int main()

希爾排序非常容易實現,演算法**短而簡單。希爾排序時插入排序的一種改進,減少了其複製的次數,速度要快很多。原因是,當n

值很大時資料項每一趟排序需要的個數很少,但資料項的距離很長。當

n值減小時每一趟需要和動的資料增多,此時已經接近於它們排序後的最終位置。正是這兩種情況的結合才使希爾排序效率比插入排序高很多。

希爾排序總結

資料結構之排序演算法 希爾排序 很多地方借鑑了 他的思想,本人認為該作者已經寫的很好了,只是在他的基礎上加入了一些自己的理解和說明 維基百科 參考部落格 希爾排序 其實就是分組的插入排序 希爾排序基本思想是 在無序的陣列中定義乙個增量,然後用增量將陣列分成幾個部分,每個部分進行插入排序,然後減少增量...

排序演算法3 希爾排序

此篇我是17年7月份有幸閱讀到morewindows的此篇部落格 希爾排序 可惜的是當時不是很懂。又因工作繁忙以至於忘了此事。直到最近換完工作才有想起有此坑還未填上,便又翻出看了一遍。這次有了全新的認識。特此記錄 現在才想起當時為何看的不是很懂,是因為此篇部落格中的實驗中間省略了一小部分。看似省略的...

排序演算法總結(四)希爾排序

希爾排序又稱縮小增量排序,是插入排序的一種。它的基本思想是先將整個待排記錄序列分割成若干個子串行,然後對這若干個子串行分別進行直接插入排序,等到待排序列基本有序時,再對整個序列進行直接插入排序。比如如下陣列,先已step 5進行分割。49,38,65,97,76,13,27,49,55,4 由於st...