Golang程序 使用泡沫排序对数组进行排序
定义 :泡沫排序是最简单的排序算法,如果相邻元素的顺序不对,则重复交换它们。
例子
输入 arr = [7, 5, 1, 6, 3] 。
- 第1次 迭代 => swap(7, 5) => swap(7, 1) => swap(7, 6) => swap(7, 3) => [5, 1, 6, 3, 7] 。
- 第2次 迭代 => [1, 5, 3, 6, 7] 。
- 第3次 迭代 => [1, 3, 5, 6, 7] 。
- 第4次 迭代 => [1, 3, 5, 6, 7] 。
- 第5次 迭代 => [1,3,5,6,7
解决这个问题的方法
第1步:从第 0个 索引到 n-1的 数组进行迭代 。
第2步:将数组从第 0个索引迭代到 n-1-i ,其中 i 是上述循环的索引。
第3步:如果最高的元素在数组的起始位置,则进行交换,否则离开。
第3步:结束时,返回数组。
时间复杂度: O(n2 )
程序
package main
import "fmt"
func bubbleSort(arr []int) []int{
for i:=0; i<=len(arr)-1; i++{
for j:=0; j<len(arr)-1-i; j++{
if arr[j]> arr[j+1]{
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
return arr
}
输出
[0 1 2 5 6]
[2 3 4 5 6]
[1 2 3 4 5]