go語言學習筆記之冒泡排序的實現

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

冒泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法

演算法原理

冒泡排序演算法的運作如下:
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較

    演算法穩定性


  冒泡排序是就地排序,且它是穩定的。

演算法描述

          go語言

package bubblesort//冒泡排序func BubbleSort(values []int) {flag := truefor i := 0; i < len(values)-1; i++ {flag = truefor j := 0; j < len(values)-i-1; j++ {if values[j] > values[j+1] {values[j], values[j+1] = values[j+1], values[j]flag = false}}if flag == true {break}}}
測試案例:

package bubblesortimport "testing"//冒泡排序測試func TestBubbleSort1(t *testing.T) {values := []int{5, 4, 3, 2, 1}BubbleSort(values)if values[0] != 1 || values[1] != 2 || values[2] != 3 || values[3] != 4 || values[4] != 5 {t.Error("BubbleSort() failed Got", values, "Expected 1 2 3 4 5")}}func TestBubbleSort2(t *testing.T) {values := []int{5, 5, 3, 2, 1}BubbleSort(values)if values[0] != 1 || values[1] != 2 || values[2] != 3 || values[3] != 5 || values[4] != 5 {t.Error("BubbleSort() failed. Got", values, "Expected 1 2 3 5 5")}}func TestBubbleSort3(t *testing.T) {values := []int{5}BubbleSort(values)if values[0] != 5 {t.Error("BubbleSort() failed. Got", values, "Expected 5")}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.