参考链接
https://blog.csdn.net/qq_38308156/article/details/108124756
冒泡法排序可简单的理解为,从数组的第一个值开始,循环的与后面的所有值进行对比,选出大(小)的那个,继续与后续的值对比,继续选出大(小)的值一直到两两比较完,并把它放到最后;接下来就是进入循环 ,第二个依次与后面数组值比较,直到最后一个比较完成,则排序完成。
冒泡排序法(从小到大)
<?php
// 冒泡排序 从小到大
function arrSort($arr)
{
$len = count($arr); // 数组长度
for ($i=0; $i < $len-1; $i++) {
for ($j=0; $j < $len-1-$i; $j++) {
if($arr[$j] > $arr[$j+1]){ // 相邻两个值作比较,选出大的那个值,交换位置,然后继续往后做比较直到数组最后一个值
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
$arr = [9,56,3,7,100,43,15,88];
// 调用排序方法
$new_arr = arrSort($arr);
// 打印排序号的新数组
echo "<pre>";print_r($new_arr);echo "</pre>";
或者 这是对数组中某个字段值进行排序,$key(字段名)
// 从小到大排序
public function mpSort($arr,$key){
for($i=0;$i<count($arr);$i++){
for($j=$i;$j<count($arr);$j++){
if($arr[$i][$key]>$arr[$j][$key]){
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
}
}
}
return $arr;
}
得到结果如下:
Array
(
[0] => 3
[1] => 7
[2] => 9
[3] => 15
[4] => 43
[5] => 56
[6] => 88
[7] => 100
)
冒泡排序法(从大到小)
<?php
// 冒泡排序 从大到小
function arrSort($arr)
{
$len = count($arr); // 数组长度
for ($i=0; $i < $len-1; $i++) {
for ($j=0; $j < $len-1-$i; $j++) {
if($arr[$j] < $arr[$j+1]){ // 相邻两个值作比较,选出小的那个值,交换位置,然后继续往后做比较直到数组最后一个值
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
$arr = [9,56,3,7,100,43,15,88];
// 调用排序方法
$new_arr = arrSort($arr);
// 打印排序号的新数组
echo "<pre>";print_r($new_arr);echo "</pre>";
或者 这是对数组中某个字段值进行排序,$key(字段名)
// 从大到小排序
public function mpAsort($arr,$key)
{
$len = count($arr); // 数组长度
for ($i=0; $i < $len-1; $i++) {
for ($j=0; $j < $len-1-$i; $j++) {
if($arr[$j][$key] < $arr[$j+1][$key]){ // 相邻两个值作比较,选出小的那个值,交换位置,然后继续往后做比较直到数组最后一个值
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
得到结果如下:
Array
(
[0] => 100
[1] => 88
[2] => 56
[3] => 43
[4] => 15
[5] => 9
[6] => 7
[7] => 3
)
————————————————
版权声明:本文为CSDN博主「Small-White-Phper」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38308156/article/details/108124756