概述
冒泡排序是一种排序的算法, 通过连续的左右比较交换位置, 最终形成正序或倒序, 其思想就是像冒泡泡一样, 通过不断的上浮, 最终浮出水面
图示
代码
假设场景是正序, 数组中有n个元素 . 主要思路就是按顺序从前到后两个元素依次比较, 那么大的就往后冒一趟比较就已经完成, 最坏的情况下总计需要比较n-1趟, 最好的情况下需要比较一趟即可完成排序 .
func main() {
arr := [6]int{3,82,44,100,33,99}
bubbleSort(&arr)
fmt.Println(arr)
}
func bubbleSort(arr *[6]int) {
var temp int
exchange := false
for j := 0; j < len(arr) - 1; j++ {
for i := 0; i < len(arr) - 1 - j; i++ {
if arr[i] > arr[i+1] {
exchange = true
temp = arr[i]
arr[i] = arr[i+1]
arr[i+1] = temp
}
}
if !exchange {
break
}
}
}
时间复杂度
由于使用了双重for循环, 因此简化后的时间复杂度为O(n²)