Go 语言 实现冒泡排序

简介: 冒泡排序是大家熟知的经典算法。在Go语言中实现它,关键在于理解其核心思想:通过不断比较并交换相邻元素,让序列中的最大值像泡泡一样“浮”至顶端。每一轮比较都能确定一个最大值的位置。外层循环控制排序轮数,内层循环负责比较与交换。随着每轮排序完成,未排序部分逐渐缩小,直至整个数组有序。以下是Go语言实现示例及说明。

冒泡排序相比学过后端语言的同学都了解过,今天给大家讲一讲Go语言中是如何实现冒泡排序呢. 其实不论任何语言,冒泡排序的思想是不会改变的,如何我们能够充分认识到冒泡排序是怎样一个的排序,相信转换成代码也不是难事.

好啦 废话少说,我们开始!
首先, 我们要认识一下什么叫做冒泡排序,

冒泡排 就是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

冒泡排 就是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

986a7f38620042709e9f1c2cf5f879a2~tplv-k3u1fbpfcp-zoom-1.png

其次, 我们可以先推导一轮的最大值排序

代码:

1.第一轮推导,确认了最大值

冒泡排序前 arr = [24 ,69, 80, 57, 13]

第一轮冒泡排序后 arr = [24 ,69, 57, 13, 80]

1.第二轮推导,确认第二个最大值

第一轮冒泡排序后 arr = [24 ,69, 57, 13, 80]

第二轮冒泡排序后 **arr = [24 ,57 ,13, 69, 80]**

其实通过以上推导,我们不难发现,每推导一次,就能得到一个最大值放置数组的最后边,于是我们便可以写出结论,外部for循环的次数就等于数组的长度减1

同时数组的内部也要循环遍历找出最大值放置数组后面,其循环次数也是数组长度减1


func bobble(arr *[6]int) {
   
   
  temp := 0 // 定义临时变量,进行数据交换
  for j := 0; j < len(arr)-1; j++ {
   
    // 外循环 循环次数
    for i := 0; i < len(arr)-1; i++ {
   
    // 内循环 数组遍历
      if arr[i] > arr[i+1] {
   
   
        temp = arr[i]
        arr[i] = arr[i+1]
        arr[i+1] = temp
      }
    }
  }
}
目录
相关文章
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
242 1
|
11月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
11月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
5月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
325 1
|
6月前
|
搜索推荐 算法 Go
Go语言数组排序(冒泡排序法)—— 用最直观的方式掌握排序算法
本案例介绍使用冒泡排序对整数数组进行升序排序的实现方法,涵盖输入处理、错误检查与排序逻辑。通过代码演示和算法解析,帮助理解排序原理及Go语言切片操作,为学习更复杂排序算法打下基础。
|
5月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
422 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
282 0
|
5月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
260 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
352 0
|
5月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。

热门文章

最新文章