【C语言】【数据结构】冒泡排序及优化

一、算法思想

冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟,每一趟都会把相邻的两个元素的错误顺序交换,将当前趟次中最大或者最小的元素像"冒泡泡"一样冒到最后面,反复地走访元素序列,直到所有元素都排好序。

二、举例

待排序列:3,1,7,5,8,9,0,2,4,6

排序规则:从小到大

第一趟:

3 比 1 大,交换。

3 比 7 小,不动。

第一趟完成,最大数 9 被冒到了最后面。

第二趟:

第二趟完成,最大数 8 被冒到了倒数第二个。

。。。。。。

此次类推,直到所有元素排序完成。

三、代码及运行结果

四、算法优化

如果待排序列为:1,0,2,3,4,5,6,7,8,9

在第一躺结束后,所有元素就已经排序好,后面还有很多趟是没有必要执行的,所以我们需要优化冒泡排序算法。每趟设置一个标记 flag 初始为0,表示此趟未交换顺序;一旦发生相邻元素的交换,就将 flag 置 1 。如果一趟结束后,没有发生相邻元素的交换,就表明序列已经排序完毕,结束排序。

代码及运行结果:

相关推荐
薛定谔的猫喵喵几秒前
天然气压力能利用系统综合性评价平台:基于Python和PyQt5的AHP与模糊综合评价集成应用
开发语言·python·qt
数智工坊7 分钟前
【数据结构-树与二叉树】4.3 二叉树的存储结构
数据结构
独好紫罗兰13 分钟前
对python的再认识-基于数据结构进行-a004-列表-实用事务
开发语言·数据结构·python
gjxDaniel14 分钟前
Objective-C编程语言入门与常见问题
开发语言·objective-c
choke23325 分钟前
[特殊字符] Python异常处理
开发语言·python
云中飞鸿25 分钟前
linux中qt安装
开发语言·qt
铉铉这波能秀26 分钟前
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
数据结构·leetcode·list
少控科技39 分钟前
QT第6个程序 - 网页内容摘取
开发语言·qt
darkb1rd39 分钟前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
历程里程碑42 分钟前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法