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

代码及运行结果:

相关推荐
神仙别闹4 分钟前
基于C语言 HTTP 服务器客户端的实验
服务器·c语言·http
im_AMBER22 分钟前
Leetcode 47
数据结构·c++·笔记·学习·算法·leetcode
我命由我1234526 分钟前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
HLJ洛神千羽26 分钟前
C++程序设计实验(黑龙江大学)
开发语言·c++·软件工程
kyle~31 分钟前
算法数学---差分数组(Difference Array)
java·开发语言·算法
曹牧32 分钟前
C#:三元运算符
开发语言·c#
Jonathan Star1 小时前
MediaPipe 在Python中实现人体运动识别,最常用且高效的方案是结合**姿态估计**(提取人体关键点)和**动作分类**(识别具体运动)
开发语言·python·分类
滨HI01 小时前
C++ opencv拟合直线
开发语言·c++·opencv
GilgameshJSS1 小时前
STM32H743-ARM例程40-U_DISK_IAP
c语言·arm开发·stm32·单片机·嵌入式硬件
沐浴露z1 小时前
详解JDK21新特性【虚拟线程】
java·开发语言·jvm