Golang(二十一)[排序算法-冒泡排序]

Golang-排序算法-冒泡排序

在這裏插入圖片描述

1.簡介

冒泡排序Bubble Sort)是一種較爲簡單的排序算法,重複的走訪要排序的數列,一次比較兩個元素,如果順序錯誤就交換,走訪舒蕾的工作是重複的進行指導沒有需要再交換的位置,如同水中的氣泡最終上浮到頂端一樣。
冒泡排序Bubble Sort)還有一種優化算法,就是立一個flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。

2.原理

以升序排序爲例

  1. 比較相鄰的元素,如果第一個比第二個大,就交換彼此;
  2. 對每一對相鄰元素做同樣的工作,從開始第一對結尾的最後一對,此時,最後打的元素應該是最大的數; 針對所有元素重複以上步驟,除了最後一個;
  3. 持續每次對越來越少的元素重複上面的步驟,知道沒有任何一對數字需要比較。

3.Golang代碼

package main

import "fmt"

// 冒泡排序
func main() {
	var arr = []int{9, 10, 11, 5, 3, 6, 5, 4, 1, 22, 15}
	//升序
	bubbleAscendingSort(arr)
	//降序
	bubbleDescendingSort(arr)
}
func bubbleAscendingSort(arr []int) {
	for i := 0; i < len(arr)-1; i++ {
		for j := i + 1; j < len(arr); j++ {
			if arr[i] > arr[j] {
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
	}
	fmt.Println(arr)
}
func bubbleDescendingSort(arr []int) {
	for i := 0; i < len(arr)-1; i++ {
		for j := i + 1; j < len(arr); j++ {
			if arr[i] < arr[j] {
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
	}
	fmt.Println(arr)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章