排序算法-冒泡算法【GIF圖解】初學者小白必看

Chinar blog www.chinar.xin

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

C#排序算法之冒泡排序


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

助力快速掌握 冒泡排序 原理及應用

使有限時間 具備無限可能

Chinar —— 心分享、心創新!

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

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

Chinar 教程效果

在這裏插入圖片描述



全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1

Intro —— 簡介


冒泡排序/Bubble Sort,是一種較簡單的排序算法。

運行原理:

1. 通過循環遍歷要排序的元素序列;
2. 依次比較相鄰的兩個元素,根據要求條件(大/小),交換兩元素位置,從而使最(大/小)元素到達數列頂端;
3. 多次循環,直到沒有相鄰元素需要交換,表明數列以排序完成。

因數列中的最(大/小)元素,經交換,慢慢"浮動"到數列頂端。
如同氣泡由水底上浮到水面的過程一般,因此得名- 《冒泡排序》
舉個例子
在這裏插入圖片描述


2

Demo —— 例子


第一種方案:

按照基本概念,代碼設計實現後,發現循環了90次,纔將數列排好。
舉個例子

for (int j = 0; j < ints.Length; j++) //使以下循環執行多次:ints.Length 次
{
    /*從頭到尾,依次訪問元素。
      循環一次後,最大元素已經交換到了數列最右邊。也就是ints[ints.Length - 1]一定是最大的。
     */
    for (int i = 0; i < ints.Length - 1; i++)
    {
        cycleIndex++;              //計數
        if (ints[i] > ints[i + 1]) //比較兩個相鄰元素,將兩者數據交換
        {
            ints[i] += ints[i + 1];
            ints[i + 1] = ints[i] - ints[i + 1];
            ints[i] = ints[i] - ints[i + 1];
        }
    }
}

執行後

元素值:0
元素值:1
元素值:2
元素值:3
元素值:5
元素值:6
元素值:7
元素值:8
元素值:9
元素值:10
----------------------------------------------
循環次數:90

Chinar 總結,對於新手來講,冒泡排序會有哪幾個難點:

  • 兩層循環的意義:外層循環決定本次排序需要 排幾輪,有幾個數排幾輪,內層循環是真正的比較相鄰兩數的大小

  • 內層循環J的取值範圍:數據長度-已排序好數據個數-1爲什麼要減一:因爲從第一個數開始與自身往後一索引數比較,所以不能爲 -最後一個數,因此要減一,也就是說當j等於倒數第二個數時,整個數列都比較了一遍


3

Demo2 —— 例子2


第二種方案:

我們浪費的就是每次已經處理過的數據,我們再次進行了循環比較,這樣做毫無意義。

舉個例子

for (int j = 0; j < ints.Length; j++) //使以下循環執行多次
{
    /*只從頭到尾,依次訪問元素。
      循環一次後,最大元素已經交換到了數列最右邊,也就是最後一個元素此時最大。
      那麼下一輪循環比較時,就無需再比較它,浪費一次循環。
      
      我們無需將已經浮動到右端的元素,再做比較。
     
      優化:需要在每一輪循環比較時,跳過我們已經處理過的數據。
      這樣 45次循環,即可完成排序

     */
    for (int i = 0; i < ints.Length - j - 1; i++)
    {
        cycleIndex++;              //計數
        if (ints[i] > ints[i + 1]) //比較兩個相鄰元素,將兩者數據交換
        {
            ints[i] += ints[i + 1];
            ints[i            + 1] = ints[i] - ints[i + 1];
            ints[i]                = ints[i] - ints[i + 1];
        }
    }
}

執行後

元素值:0
元素值:1
元素值:2
元素值:3
元素值:5
元素值:6
元素值:7
元素值:8
元素值:9
元素值:10
----------------------------------------------
循環次數:45

在每一輪循環比較時,跳過我們已經處理過的數據。
這樣 45次循環,即可完成排序


4

Other —— 其他寫法


冒泡排序的多種寫法、邏輯(總結)

至此:完!


支持

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


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

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

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

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


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


Chinar

END

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

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

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

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