时间:2021-07-01 10:21:17 帮助过:39人阅读
/**
* 冒泡排序
* @param array $numbers 要排序的数组,只限数字一维数组
* @param boolean $asc 排序顺序,true是正序,false是逆序
*/functionbubble_sort(array $numbers, $asc = true) {$n = count($numbers);
// 外循环最多排(n - 1)次$out_loop_cnt = $n - 1;
for ($i = 0; $i < $out_loop_cnt; $i++) {
// 内循环最多排(n - i - 1)次$in_loop_cnt = $n - $i - 1;
for ($j = 0; $j < $in_loop_cnt; $j++) {
// 根据排序顺序判断相邻两个数是否符合交换条件$swap = $asc ? ($numbers[$j] > $numbers[$j + 1])
: ($numbers[$j] < $numbers[$j + 1]);
if ($swap) {
$temp = $numbers[$j + 1];
$numbers[$j + 1] = $numbers[$j];
$numbers[$j] = $temp;
}
}
}
return$numbers;
}
$arr = [1, 3, 5, 8, 4];
var_dump(bubble_sort($arr));
/**
*
输出:
* array (size=5)
* 0 => int 1
* 1 => int 3
* 2 => int 4
* 3 => int 5
* 4 => int 8
*/var_dump(bubble_sort($arr, false));
/**
* 输出:
* array (size=5)
* 0 => int 8
* 1 => int 5
* 2 => int 4
* 3 => int 3
* 4 => int 1
*/版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了PHP之冒泡排序,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。