Go 冒泡排序 ( Bubble Sort )

來源:互聯網
上載者:User

冒泡排序

冒泡排序 ( Bubble Sort ),是排序演算法中最簡單的一種

一般都是我們新瞭解一門語言時拿來練手使用

今天也不例外,雖然用 C# 寫過無數次的冒泡排序,但是畢竟換了一門語言,所以有必要再來實現一次

原理

1.冒泡

既然決定寫文章記錄,那麼就要好好的寫

我們說冒泡排序簡單,那麼為什麼簡單呢?就是因為容易理解

冒泡 Bubble,如其意,就像氣泡一樣,他會慢慢的從海底浮出水面

那麼這一層一層的浮現也是我們冒泡排序的實現方式

2.原理

假設我們有如此數組 :

7 2 9 22 16 93 202 0 33 29 84

一共是 11 個數字

我們先給數字加上下標

7[0] 2[1] 9[2] 22[3] 16[4] 93[5] 202[6] 0[7] 33[8] 29[9] 84[10]

這裡我們先假設要對數組進行從小到大的排序

那麼首先:

  • 最小的數字應該在第一位

那如何保證最小的數字在第一位呢?

其實就是誰小誰來的道理

3.思路

1.我們拿第一位 [0] 也就是 7 依次向後方數字做比較,直到出現比 7 小的數字後,將該數字
7 交換位置

如:第二位 [1] 也就是 2 就比 7 小,那麼 [0] 位置由 2 來佔據, 7 暫居第二位 [1]

2.此時數組 [0] 為 2 ,再按照 1. 中方式依次向後比較

3.當 [7] 0 時, 再次滿足交換條件,20 交換位置

4.最終確認 0 即最小值 ,那麼第一位置確認,就是 0

5.下一步確認第二位 [1] 值 ... 重複上述步驟

代碼

// 冒泡func Bubble_Sort(slice []int/* 帶排序的切片 */, order bool/* true : 正序; false : 倒序; */) {    /*        1. 本迴圈代表 依次與其後所有數作比較的索引        2. 由於最後一個數不用比較,所以 len(slice) - 1    */    for i := 0; i < len(slice) - 1; i++ {        // 本迴圈代表 外層將要與哪一位作比較        for k := i +1; k < len(slice); k++ {            if (slice[i] > slice[k] && order) /* 從大到小 */ || (slice[i] <= slice[k] && !order ) /* 從小到大 */ {                slice[i], slice[k] = slice[k], slice[i]            }        }    }}

結果

排序結果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.