冒泡排序很多时候我们会被面试问到。了解并清楚冒泡算法原理是非常有必要的,冒泡的含义简而言之就是交换排序。轻(小)的元素像泡泡一样浮起来。这样就能做到排序了
package main
import "fmt"
//冒泡排序
func main(){
slice := []int{50,16,10,8,6}
BubblingSort(slice)
fmt.Println(slice)
}
func BubblingSort(arr []int){
var a int
flag := false //标志位
count := 1 //排序次数
for _,_ = range arr {
for ii,_ := range arr {
if(ii>=1 && arr[ii] > arr[ii-1]){
a = arr[ii-1]
arr[ii-1] = arr[ii]
arr[ii] = a
flag = true
}
count++
}
if flag == false {
break
}
}
fmt.Printf("计算次数:%d",count)
}
最优的情况下 我们的时间复杂度 O(n) 就能搞定。也就是预先排好的情况
平均复杂度。做了两次for循环所以时间复杂度为O(n^2)