基本步骤
- 从第一个元素开始两两比较
- 若前者大于后者,则交换位置
- 第一次完毕后可保证最大的元素在数组末尾
- 故进行len(array)-1次外层循环即可保证有序
- 第二次再次从头开始,最后一个元素无需参加比较
- 因此内层循环次数-1
- 循环结束,则排序完成
可能文字过于生硬,接下来我用画图的方式来解释一下
这是第一轮循环的数组
可以看到第一轮循环后数组中最大的元素已经到了末尾,数组的长度为n,那么经过n-1次循环,数组将会变的有序,很明显的是下一次内循环时最后一个元素不用再参与比较,又可以减少时间复杂度了!!!.
接下来就是代码部分拉,我主要使用的是golang,在后序的博客中也会开始golang基础
package main
func BubbleSort(nums []int) {
//外循环进行循环次数的控制
for i := 0; i < len(nums)-1; i++ {
//内循环则执行数据的判断和交换
for j := 0; j < len(nums)-1-i; j++ {
if nums[j] > nums[j+1] {
nums[j+1], nums[j] = nums[j], nums[j+1]
}
}
}
}
}
func main() {
nums := []int{5, 4, 3, 2, 1}
BubbleSort(nums)
fmt.Println(nums)
}
这次的冒泡排序就到此为止了,如果有什么不懂的地方可以私信我,也欢迎与各位探讨编程的问题
再见了!!


