直接上代码,下面演示的是从低到高排序,也可以新增参数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相关的可以相互交流。
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。