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

代码及运行结果:

相关推荐
Fanxt_Ja3 天前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下3 天前
最终的信号类
开发语言·c++·算法
echoarts3 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix3 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题3 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
今后1233 天前
【数据结构】二叉树的概念
数据结构·二叉树
伍哥的传说3 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔3 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329293 天前
Day03_刷题niuke20250915
c语言