【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 。如果一趟结束后,没有发生相邻元素的交换,就表明序列已经排序完毕,结束排序。

代码及运行结果:

相关推荐
派葛穆1 分钟前
Python-批量安装依赖
开发语言·python
Once_day2 分钟前
C++之《Effective C++》读书总结(4)
c语言·c++·effective c++
李斯啦果13 分钟前
【PTA】L1-019 谁先倒
数据结构·算法
MSTcheng.13 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓131316 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世16 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
梵刹古音18 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
Ekehlaft21 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
rit843249924 分钟前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
开源技术26 分钟前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python