冒泡排序是一种比较简单的排序算法,它需要重复的走访过要排序的数列,依次比较两个相邻的元素,
如果顺序错误(即左元素比右元素大)就进行交换,一直到没有相邻元素需要交换,即排序完成
循环次数是数组下标个数n的2次方减n
冒泡排序算法的原理如下:
1,比较相邻的两个元素,如果第一个比第二个大,就交换他们两个;
2,对每一对相邻的元素做同样的动作,从开始的第一对到队尾的最后一对。在这一点,最后的元素应该是最大的数;
3,针对所有元素重复以上的动作,除了最后一个;
4,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要交换;
<?php
$arr = [];
$num = 1000;
for($i = 0;$i < $num;$i++){
$arr[] = mt_rand(100,999);
}
// 开始的时钟时间(秒)
$start_time = microtime(true);
/**
* 冒泡排序
*
* @param [type] $arr
* @return void
*/
function maopao($arr){
$len = count($arr);
$n = $len -1;
for($i = 0; $i < $len ;$i++){
for($j = 0; $j < $n;$j++){
if($arr[$j] > $arr[$j + 1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
echo PHP_EOL;
echo '新冒泡数组排序';
var_dump(maopao($arr));
// 结束的时钟时间(秒)
$endTime = microtime(true);
$timeConsum = round(($endTime - $start_time),3) * 1000;
echo '使用了 '.$timeConsum.'毫秒';