希爾排序的具體實現

2021-10-09 02:21:08 字數 604 閱讀 9797

原理

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序,因dl.shell於2023年提出而得名。

該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。

如果看不懂上面的原理也沒有關係,我們還有**供大家理解

這裡我們可以看到

增量(也被稱為步長):這個是我們自己決定的乙個變數,我們通過這個增量來給我們的元素分組,步長盡量與元素數是整數倍的關係,方便我們分組。

分組的關鍵其實就在我們的步長上面,我們分組就是依據步長,比如第乙個元素走過n(步長)步的時候我們就將第乙個元素與這個元素分成一組,之後再走n步,這個元素也與我們的第乙個元素分成一組,直到我們走到最後乙個。

而我們邊走邊進行插入排序。

所以,希爾排序也是一種插入排序。

希爾排序實現

希爾排序算是插入排序的一種高階進化版,雖然希爾排序的實現比較簡單,但是它的原理證明非常複雜,由於能力有限,故沒有涉及。我直接上 吧。include intcontainer 1000001 int main void int increment,temp for increment n 2 incr...

希爾排序的簡單實現

希爾排序 shell sort 是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因dl shell於1959年提出而得名。既然是插入排序的改進版本,我們就先來看一看插入排序。插入排序的原理就和打牌時我們抓牌一樣,每次摸到一張新的牌,我...

希爾排序的簡單實現

希爾排序是插入排序的一種比較高階的變形。基本思路還是分治。顯然,對於乙個給定的順序表,如果順序表已經處於乙個 相對有序 的狀態時,插入排序進行的比較和移動次數都會有所減少。而對於較短的序列,常規的插入排序效率可以接受。因此可以考慮將序列分為幾個不同的子串行,分別進行插入排序後再合併。當順序表達到了一...