<返回更多

PHP实现冒泡排序

2019-09-05    
加入收藏

直接上代码,下面演示的是从低到高排序,也可以新增参数DESC变成从高到低排序

$mpArr = array(10,2,4,6,3,1,3,2,5,9,8,7);
$mpArr = maopao($mpArr);
print_r($mpArr);
/**
*
* 用从小到高的排序说明逻辑:这里我们就需要两次用到for循环。通过第一个for循环来控制数据比较的轮次数,然后通过第二个for循环来控制次数并判断大小交换位置。那么这里的if语句判断的思路就是,如果当前值大于后面的值,就交换位置,把大的值给临时变量$tmpVal。后面的小值替换大值,大值替换小值。
* @param $arr
* @param string $type
*/
public function maopao($arr,$type='ASC'){
$len = count($arr);
$n = $len-1;
for ( $i=0; $i<$len; $i++ ){
for ( $j = 0;$j<$n;$j++ ){
switch ($type){
case 'ASC': //从小到大排序
//当前值大于下个值
if( $arr[$j] > $arr[ $j+1 ] ){
//如果当前的值大于下一个值,放到一个临时数组里
$tmpVal = $arr[$j];
//把下一个值替换当前的值
$arr[$j] = $arr[$j+1];
//把当前值替换下一个值 ,即两个位置互换
$arr[$j+1] = $tmpVal;
}
break;
case 'DESC': //从大到小排序
//当前值小于下个值
if( $arr[$j] < $arr[$j+1] ){
//当前值放到临时数组
$tmpVal = $arr[$j];
//把当前值替换成下个
$arr[$j] = $arr[$j+1];
//下个值替换成当前值,位置互换
$arr[$j+1] = $tmpVal;
}
break;
}
}
}
return $arr;
}

以上代码就是php实现冒泡排序的过程,原理在函数内已经备注了;有关PHP相关的可以相互交流。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>