Golang-排序算法-冒泡排序
1.簡介
冒泡排序(Bubble Sort)是一種較爲簡單的排序算法,重複的走訪要排序的數列,一次比較兩個元素,如果順序錯誤就交換,走訪舒蕾的工作是重複的進行指導沒有需要再交換的位置,如同水中的氣泡最終上浮到頂端一樣。
冒泡排序(Bubble Sort)還有一種優化算法,就是立一個flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。
2.原理
以升序排序爲例
- 比較相鄰的元素,如果第一個比第二個大,就交換彼此;
- 對每一對相鄰元素做同樣的工作,從開始第一對結尾的最後一對,此時,最後打的元素應該是最大的數; 針對所有元素重複以上步驟,除了最後一個;
- 持續每次對越來越少的元素重複上面的步驟,知道沒有任何一對數字需要比較。
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)
}