作者简介:

       姜海强:闷骚码农,互联网行业摸爬滚打数余载,先后担任中国体育直播TV主程、网信集团先锋支付架构师、奇虎360服务器端资深开发。热爱技术,喜欢分享,热衷领域:PHP/Golang语言、面向对象设计模式、Redis、Yaf、Yii2、微服务等。

视频课程

yaf+yar微服务-腾讯课堂
yaf+yar微服务-51CTO学院
CSDN学院

Github

个人主页
swoole-boot
roach
roach-orm

QQ群:

姜海强的QQ群

公众号:

360tryst公众号

冒泡排序

冒泡排序(Bubble Sort),是一种非常简单的排序算法。排序的核心思路如下:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现

  1. func BubbleSort(arr []int) {
  2. len := len(arr)
  3. //长度小于2不需要排序
  4. if len < 2 {
  5. return
  6. }
  7. for n :=0; n < len; n++ {
  8. for m := len - 1; m > n; m-- {
  9. if arr[n] > arr[m] {
  10. arr[n], arr[m] = arr[m], arr[n]
  11. }
  12. }
  13. }
  14. }

调用案例

  1. func main() {
  2. data := []int{12, 45, 2, 6, 678, 1, 2, 5, 8, 1, 30}
  3. BubbleSort(data)
  4. fmt.Println(data)
  5. }

以上例程输出

  1. [1 1 2 2 5 6 8 12 30 45 678]

时间复杂度

最好 最坏 平均 稳定性
O(n) O(n平方) O(n平方) 稳定

QQ群:

姜海强的QQ群

公众号:

360tryst公众号