Go语言冒泡排序
Posted 携壶酌流霞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言冒泡排序相关的知识,希望对你有一定的参考价值。
1、冒泡排序的原理
冒泡排序最好时间复杂度是 O(n),也就是当输入数组刚好是顺序的时候,只需要挨个比较一遍就行了,不需要做交换操作,所以时间复杂度为 O(n)。
冒泡排序最坏时间复杂度会比较惨,是 O(n*n)。也就是说当数组刚好是完全逆序的时候,每轮排序都需要挨个比较 n 次,并且重复 n 次,所以时间复杂度为 O(n*n)。
很显然,当输入数组杂乱无章时,它的平均时间复杂度也是 O(n*n)。
冒泡排序不需要额外的空间,所以空间复杂度是 O(1)。冒泡排序过程中,当元素相同时不做交换,所以冒泡排序是稳定的排序算法。
3、代码实现
package main
import "log"
func main() {
var arr = [...]int{
1, 0, 3, 4, 5, -6, 7, 8, 9, 10,
}
log.Println("排序前数据:", arr)
// 冒泡排序
// 从第一个数据开始,依次比较相邻元素的大小,如果前者大于后者,则进行交换操作,把大的元素往后交换。通过多轮迭代,直到没有交换操作为止。
// 第一层循环,需要遍历一遍数据
for i := 1; i < len(arr); i++ {
// 第二层循环,拿当前元素和后面的元素依次做对比,如果比后面的元素大,则两个元素调换
for j := 0; j < len(arr)-i; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
log.Println("冒泡排序后:", arr)
}
以上是关于Go语言冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章