博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法 - 冒泡排序
阅读量:6825 次
发布时间:2019-06-26

本文共 856 字,大约阅读时间需要 2 分钟。

冒泡排序(Bubble Sort)

类型:交换排序
时间复杂度(最坏):O(n^2)
时间复杂度(最好):O(n)
时间复杂度(平均):O(n^2)
空间复杂度:O(1)
稳定性:稳定

冒泡排序通过依次比较两个相邻元素的值,将数值较大的元素移动至数列尾部,每一轮的比较都能将无序数列中的最大值元素选出并移动到队尾,循环执行便可将数列按由大到小的顺序排列出来。因值大于才会发生交换,故为稳定排序。

package mainimport (    "fmt")func main() {    var arr = []int{1, 6, 2, 4, 5, 3, 7, 9, 8}    BubbleSort(arr)    fmt.Print("sorted: ", arr)}// 冒泡排序func BubbleSort(arr []int) {    length := len(arr)    alreadyOrdered := true // 记录某次排序是否发生元素交换    // 最多需要 length-1 次外循环    for i := 0; i < length-1; i++ {        // length-i 为待排序数列的长度 i 为有序数列的长度        for j := 0; j < (length-i)-1; j++ {            if arr[j] > arr[j+1] {                alreadyOrdered = false                temp := arr[j]                arr[j] = arr[j+1]                arr[j+1] = temp            }        }        // 如果某次排序没有发生交换说明已有序        if alreadyOrdered {            break        }    }}

转载地址:http://yzlzl.baihongyu.com/

你可能感兴趣的文章
JavaSE 学习参考:常量
查看>>
netapp 2个控制器spare盘分配
查看>>
我的友情链接
查看>>
华为AR2220E-S 设置限制上网时间
查看>>
实现cell的点击高亮
查看>>
如何用腾讯云打造一款微视频APP
查看>>
linux内核中的hook函数详解
查看>>
调用手机GPS实现当前位置定位并展现百度地图上
查看>>
Dota2卡牌游戏《Artifact》登陆Windows/Mac/Linux
查看>>
ruby向数据库用语句插入数据
查看>>
个人--IT业的职业细分
查看>>
“赋能开发者”高峰论坛暨葡萄城联合龙头企业共建模板库正式启动
查看>>
CentOS内核参数优化参考
查看>>
2017年大数据分析领域的六大发展趋势
查看>>
删除Jenkins的构建次数(基于Jmeter的Maven项目)
查看>>
springboot中配置文件配置各种随机数
查看>>
scala----函数和构造函数区别
查看>>
Linux平台的boost安装方法
查看>>
重温关于进程间通信的方式
查看>>
Spring
查看>>