冒泡排序 是一种比较简单的排序算法,其本质是相邻的两个元素进行大小比较,最终使得所有的元素形成从小到大或者从大到小的排列
算法原理
- 比较相邻的元素,不相等,就进行交换
- 对所有的相邻元素进行第1步的操作,第一轮比较下来,最大(小) 的元素排在了最尾部
- 相邻的元素比较的次数在上一轮比较的基础上减去1次,进入下一轮的比较,,重复第1,2步
- 最大(小),第二大(小),第三大(小)......的元素依次会排到元素的最尾部
- 当比较次数为1的时候,执行完第1步,所有比较结束
冒泡排序是一种稳定的排序算法
代码示例
<?php
function bubbing_sort(array $arr)
{
// 统计需要排序的元素个数
$len = count($arr);
// 控制进行几轮比较
for($j = 1; $j < $len ;$j++)
{
// 相邻的一组元素,两两之间需要比较的次数
for($i = 0 ; $i < $len-$j ;$i++)
{
// 元素的排列方向 从小到大或者从大到小
if($arr[$i] > $arr[$i+1])
{
// 相邻的两个元素大小比较符合条件,两两交换位置
$temp = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $temp ;
}
}
}
return $arr ;
}
$arr = [99,10,88,23,13,67];
var_dump(bubbing_sort($arr));
// output
/*array (size=6)
0 => int 10
1 => int 13
2 => int 23
3 => int 67
4 => int 88
5 => int 99*/
冒泡排序的核心是相邻元素之间的两两比较,比较完一轮,还有元素没有比较完,进入下一轮的比较,直到所有的元素都按照一定的顺序呈现出来.
PS : 要是没有直观的感受,可以裁剪出几个小纸片,每个小纸片上写上数字(相当于一个元素),将这些小纸片放在一块按照冒泡排序实现思路进行比较.
网友评论