Go语言冒泡排序

Posted 携壶酌流霞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言冒泡排序相关的知识,希望对你有一定的参考价值。

1、冒泡排序的原理

从第一个数据开始,依次比较相邻元素的大小。如果前者大于后者,则进行交换操作,把大的元素往后交换。通过多轮迭代,直到没有交换操作为止。冒泡排序就像是在一个水池中处理数据一样,每次会把最大的那个数据传递到最后。
2、冒泡排序的性能
  • 冒泡排序最好时间复杂度是 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语言冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

Go语言冒泡排序

Go语言冒泡选择插入快速排序实战浅析

Go语言 实现冒泡排序

GO-冒泡排序算法

GO语言之冒泡排序

Go语言之冒泡排序算法和二分查找算法