排序算法---冒泡排序

冒泡排序算法是一种稳定的排序算法。
冒泡排序算法原理如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

数据演示:
待排序序列: 10 7 15 2 5 27 13

0 1轮:  7 10 2 5 15 1327】 比较6次 |  (相邻两个元素两两比较:分别是:7-10比较交换位置、10-15比较无需交换、15-2比较交换位置、15-5比较交换位置、15-27比较无需交换、27-13比较交换位置 【确定27】)

1 2轮:  7 2 5 10 1315 27】 比较5次  (相邻两个元素两两比较:分别是:7-10比较无需交换、10-2比较交换位置、10-5比较交换位置、10-15比较无需交换、15-13比较交换位置 【确定15 27】)

2 3轮:  2 5 7 1013 15 27】 比较4次  (相邻两个元素两两比较:分别是:7-2比较交换位置、7-5比较交换位置、7-10比较无需交换、10-13比较无需交换 【确定13 15 27】】)

3 4轮:  2 5 710 13 15 27】 比较3次  (相邻两个元素两两比较:分别是:2-5比较无需交换、5-7比较无需交换、7-10比较无需交换 【确定 10 13 15 27】)

4 5轮:  2 57 10 13 15 27】 比较2次  (相邻两个元素两两比较:分别是:2-5比较无需交换、5-7比较无需交换 【确定7 10 13 15 27】)

5 6轮:  25 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));
posted @   米饭!大米饭  阅读(255)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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】
点击右上角即可分享
微信分享提示