排序算法---冒泡排序
冒泡排序算法是一种稳定的排序算法。
冒泡排序算法原理如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
数据演示:
待排序序列: 10 7 15 2 5 27 13
0 第1轮: 7 10 2 5 15 13 【27】 比较6次 | (相邻两个元素两两比较:分别是:7-10比较交换位置、10-15比较无需交换、15-2比较交换位置、15-5比较交换位置、15-27比较无需交换、27-13比较交换位置 【确定27】)
1 第2轮: 7 2 5 10 13 【15 27】 比较5次 (相邻两个元素两两比较:分别是:7-10比较无需交换、10-2比较交换位置、10-5比较交换位置、10-15比较无需交换、15-13比较交换位置 【确定15 27】)
2 第3轮: 2 5 7 10 【13 15 27】 比较4次 (相邻两个元素两两比较:分别是:7-2比较交换位置、7-5比较交换位置、7-10比较无需交换、10-13比较无需交换 【确定13 15 27】】)
3 第4轮: 2 5 7 【10 13 15 27】 比较3次 (相邻两个元素两两比较:分别是:2-5比较无需交换、5-7比较无需交换、7-10比较无需交换 【确定 10 13 15 27】)
4 第5轮: 2 5 【7 10 13 15 27】 比较2次 (相邻两个元素两两比较:分别是:2-5比较无需交换、5-7比较无需交换 【确定7 10 13 15 27】)
5 第6轮: 2 【5 7 10 13 15 27】 比较1次 (相邻两个元素两两比较:分别是:2-5比较无需交换 【确定5 7 10 13 15 27】)
6 第7轮: 【2 5 7 10 13 15 27】 比较0次 (相邻两个元素两两比较:只剩 2 【确定2 5 7 10 13 15 27】)
代码实现:
function bubbleSort($arr) {
$len = count($arr);
if($len<=1){
return $arr;
}
for($i=0;$i<$len-1;$i++) { //控制循环轮数。7个数字,比较7轮
for($j=0;$j<$len-1-$i;$j++) { //每轮两两比较次数,每轮会确定一个数。每执行一轮,确定的数+1,需比较的数-1
if($arr[$j]>$arr[$j+1]) { //如果前一个数比后一个数大,则需要交换两数的位置
$temp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
return $arr;
}
print_r(bubbleSort($arr));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】