『7x24小时有问必答』

数组从小到大排序,排序结果

原数组:5, 2, 8, 1, 9, 3, 7, 4, 6, 10
排序后:1, 2, 3, 4, 5, 6, 7, 8, 9, 10

三种实现方式

1. 高级语言(直接调用内置方法)

实际工程推荐这种方式,稳定、高效、不重复造轮子。

2. 冒泡排序(PLC/ST 实现)

原理:  相邻两个数比较,大的往后挪,每轮把最大值"冒泡"到末尾。
执行过程演示(前3轮):

3. 快速排序(大数据量首选)

算法
时间复杂度
适用场景
冒泡排序
O(n²)
数据量小、PLC简单场景
快速排序
O(n log n)
数据量大、追求效率
内置Sort()
O(n log n)
工程首选,直接调用

总结:
数据量小(<50个)→ 冒泡排序,简单直观
数据量大 → 快速排序或内置方法
PLC里实现 → 冒泡排序最易理解

冒泡排序:像气泡一样,把最大的"顶"上去

冒泡排序是最直观的排序方法。原理就一句话:  相邻两个数比大小,谁大谁往后挪。就像水里的泡泡,大的泡泡会慢慢浮到最上面——冒泡排序的名字就是这么来的。

怎么跑的?拿你这张图举例:

当前比较 8 和 6:
8 在前,6 在后
8 > 6,顺序不对
交换
  → 6 往前,8 往后

完整过程

第一轮:  从头到尾,相邻的两个数逐对比较,大的往后挪。
第二轮:  再跑一遍,这次9到位。
第三轮:  再跑一遍,8到位。……
每跑一轮,就有一个最大值"冒泡"到末尾。
跑完 n-1 轮,全部排好。

一句话总结

相邻比较,大的后移;一轮一轮,最大置顶。简单,但数据多了就慢——10个数要跑9轮。

冒泡排序效率那么低,为什么还要学?

因为简单,简单到所有人都能看懂。

三大不可替代的价值

1. 入门第一选择

冒泡排序是排序算法里的"启蒙老师"。
它不玩花样,不搞递归,不依赖复杂数据结构——就一个动作:比较,然后交换。
初学者写一遍代码,跑一遍流程,排序的基本原理就明白了。理解了冒泡,再学快速排序、归并排序,你就知道"复杂"是在哪里被优化的。
所有高级算法,都是从简单算法长出来的。

2. 零额外内存

冒泡排序是原地排序算法——不需要申请额外数组,不需要递归栈空间,就在原数组上"就地"比较和交换。
在 PLC、单片机、嵌入式这些内存以 KB 计的环境里,这一点很重要。
算法
额外空间
内存受限场景
冒泡排序
0
(原地排序)
可用
快速排序
O(log n)(递归栈)
️ 谨慎
归并排序
O(n)(需要额外数组)
不适用
3. 小数据量时够用
冒泡排序效率确实低——时间复杂度 O(n²)。1000个数要比较近100万次。
但数据量小的时候,这个差距可以忽略不计。
数据量
冒泡排序耗时
快速排序耗时
10个数
几乎瞬间
几乎瞬间
100个数
毫秒级
毫秒级
10000个数
明显卡顿
仍然很快
数据量 <100 的时候,冒泡和快排的差距,就像走路和开车去楼下便利店——都能到,没必要纠结。

一句话总结

冒泡排序不是"最好"的算法,但它是最容易理解的算法。学排序,从冒泡开始;用排序,按场景选择。
核心逻辑其实就三层嵌套,拆开来很好理解:
外层循环  i:控制"跑几轮"。n 个数最多跑 n-1 轮,每跑完一轮,当前最大的数就"冒泡"到末尾了。所以每多跑一轮,末尾就多一个已排好的数,下一轮的比较范围就可以少一个。
内层循环  j:控制"每轮比几次"。从第 1 个元素开始,依次和下一个比较,比到  n-i  的位置就停(后面已经排好了,不用再比)。
交换逻辑:每一对相邻元素,如果前一个比后一个大,就用  temp  中间变量把它俩换过来;否则不动,继续保持原样。
一句话记忆:  外圈控轮次,内圈比相邻,前大就交换,一轮冒一个泡。
成品验证
回看初始数组,我们给的初值是乱序的:
5, 2, 8, 1, 9, 3, 7, 4, 6, 10
运行程序后,数组变成了:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
从上图监控画面可以清楚看到,arr[1]  到  arr[10]  已经按从小到大整齐排列,冒泡排序完成。
  验证小技巧:实际项目中,可以在程序末尾加一个完成标志位(比如  bSortDone := TRUE),方便HMI上直观显示"排序已完成",也便于后续调试排查。
冒泡排序,一句话说透:
相邻两个数比大小,大的往后挪、小的往前冒,一轮下来最大值"浮"到末尾,反复冒,直到全部排好。
优点:
逻辑极简,初学者 10 分钟就能看懂、写出来
原地排序,不占额外内存,只交换数组本身的位置
数据量小(几十个元素以内)时,完全够用
缺点:
时间复杂度 O(n²)——数据量翻 10 倍,耗时翻 100 倍
数据量一大(几百上千个元素),性能断崖式下降,明显卡顿
工业现场大量数据排序场景,优先选用快速排序、归并排序等更高效的算法
一句话总结:小数据用它,简单够用;大数据换算法,别硬扛。

往期推荐

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码