时间复杂度:O(n^2)
- 最好:O(n)
 
- 数组中数据有序,只需要遍历一次且不需要交换
 - 最坏:O(n^2)
 空间复杂度:O(1)
- 只需要一个额外空间用于数据交换
 
原理
比较两个相邻的数组元素,使起满足条件交换元素位置,直到n-1轮循环操作结束。
实现
- 从头部开始,比较相邻的两个元素 
arr[j]和arr[j+1],如果前一个元素比后一个元素大,进行数据交换。 - 下标向后移动,即使  
j=j+1,再次比较元素arr[j]和arr[j+1],判断是否需要交换数据。 - 针对序列中每一对两两相邻的数据重复以上步骤,直到下标指向最后一个位置。
 在每一轮循环中重复以上步骤 (1)(2)(3),直到 len-1 轮循环执行完毕。
// 冒泡排序、降序排序func BubbleSort(slice []int) []int {if len(slice) < 2 {return slice}for i := 0; i < len(slice)-1; i++ {for j := 0; j < len(slice)-1-i; j++ {if slice[j] < slice[j+1] {slice[j], slice[j+1] = slice[j+1], slice[j]}}}return slice}
