助力快速掌握希爾排序 使有限時間 具備無限可能 |
我們的初衷是將一種簡單的生活方式帶給世人 爲初學者節省寶貴的時間,避免採坑! |
Chinar 教程效果:
1
Intro —— 簡介
百度百科:希爾排序(Shell’s Sort)是插入排序的一種又稱“縮小增量排序”(Diminishing Increment Sort)
是直接插入排序算法的一種更高效的改進版本。希爾排序是非穩定排序算法。該方法因D.L.Shell於1959年提出而得名
也就是說希爾排序是一種特殊的插入排序
請大家先了解一下插入排序,這樣有助於理解希爾排序:插入排序
2
Realize —— 實現
希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序
隨着增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個數列恰被分成一組,算法便終止
請大家先看代碼,難點會在代碼後面列出
static void ShellSort(int[] data)
{
int index;
int len = data.Length;
int perIndex = data.Length/2;
while (perIndex>0)
{
for (int i = perIndex; i < len; i++)
{
index = i - perIndex;
int temp = data[i];
while (index >= 0 && data[index] > temp)
{
data[index + perIndex] = data[index];
index -= perIndex;
}
data[index + perIndex] = temp;
}
perIndex /= 2;
}
}
Chinar
總結:對於新手來講,希爾排序會有哪幾個難點:
- 增量的意義:
表示當前數與間隔增量個數的數作比較,一般默認爲數列長度的1/2
- 增量每次縮減一半的意義:
相當於將數列分組,對每組進行插入排序,直到每組數據個數爲1,這時排序完成
至此:您已完美征服了 希爾排序
支持
May Be —— 開發者,總有一天要做的事!
Chinar 提供一站式《零》基礎教程 使有限時間 具備無限可能! |
Chinar 免費服務器、建站教程全攻略!( Chinar Blog )
本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究
對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]
對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址