C#希爾排序中文教程-初學者必學

Chinar blog www.chinar.xin

Unity UGUI 完整系列教程 (Chinar中文圖解)

C#排序算法之希爾排序


本文提供全流程,中文翻譯。

助力快速掌握希爾排序

使有限時間 具備無限可能

Chinar —— 心分享、心創新!

我們的初衷是將一種簡單的生活方式帶給世人

爲初學者節省寶貴的時間,避免採坑!

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,這時排序完成

C#排序算法學習彙總(Chinar中文圖解)

至此:您已完美征服了 希爾排序


支持

May Be —— 開發者,總有一天要做的事!


擁有自己的服務器,無需再找攻略

Chinar 提供一站式《零》基礎教程

使有限時間 具備無限可能!

先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


Chinar 免費服務器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究

對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]

對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章