直接上代碼,下面演示的是從低到高排序,也可以新增參數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$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;
}