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)
}