【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 天前
C语言---枚举变量
c语言·开发语言
李慕婉学姐1 天前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫1 天前
quecpython中&的具体含义和使用场景
开发语言·python
云栖梦泽1 天前
易语言中小微企业Windows桌面端IoT监控与控制
开发语言
数据大魔方1 天前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Edward.W1 天前
Python uv:新一代Python包管理工具,彻底改变开发体验
开发语言·python·uv
小熊officer1 天前
Python字符串
开发语言·数据库·python
月疯1 天前
各种信号的模拟(ECG信号、质谱图、EEG信号),方便U-net训练
开发语言·python
荒诞硬汉1 天前
JavaBean相关补充
java·开发语言
提笔忘字的帝国1 天前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos