栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Go内置容器——数组和切片(下)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go内置容器——数组和切片(下)

冒泡排序 概念:
  1. 冒泡排序(Bubble Sort),是⼀种计算机科学领域的较简单的排序算
    法。
  2. 它重复地遍历要排序的数组元素,⼀次⽐较两个元素,如果他们的顺序错误就把他们交换过来。重复地进⾏直到没有再需要交换,也就是说该数组已经排序完成。
  3. 这个算法的名字由来是因为越⼤的元素会经由交换慢慢“浮”到数列的顶
    端,故名“冒泡排序”。
冒泡排序算法的原理如下:
  1. ⽐较相邻的元素。如果第⼀个⽐第⼆个⼤,就交换他们两个。
  2. 对每⼀对相邻元素做同样的⼯作,从开始第⼀对到结尾的最后⼀对。在这⼀点,最后的元素应该会是最⼤的数。
  3. 针对所有的元素重复以上的步骤,除了最后⼀个。
  4. 持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。
冒泡排序分析:



核⼼代码:

//从⼩到⼤排列
func BubbleSort(arr []int) {
iCount := 0 //记录内循环次数
jCount := 0 //记录外循环的次数
//双层for循环
for i := 0; i < len(arr)-1; i++ {
//定义⼀个标记,判断本轮是否有两两换位。如果没有换位,那说明排序结
束,可以跳出循环。
//例如:12345,当执⾏第⼀轮循环后,所有相邻的两个数值都⽆需换位,那
说明排序正常,⽆需排序。不⽤执⾏后续的循环。
flag := true
for j := 0; j < len(arr)-1-i; j++ {
//判断相邻两个数据的⼤⼩
if arr[j] > arr[j+1] {
//如果前者⽐后者⼤,则执⾏数据交换
arr[j], arr[j+1] = arr[j+1], arr[j]
//如果出现换位,说明排序还没有结束,需要继续循环执⾏。
flag = false
}
iCount++
}
jCount++
//如果本轮没有换位,那说明排序结束,则跳出循环
if (flag) {
break
}
}
fmt.Println(“i循环次数=”, jCount)
fmt.Println(“j循环次数=”, iCount) }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号