PHP实现冒泡排序
冒泡排序思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
代码实现:(从小到大)
$arr = [1, 21, 13, 4, 15, 26, 17, 8];
function bubble($arr)
{
$size = count($arr);
for($i=0; $i<$size; $i++){
for($j=0; $j<$size-$i-1; $j++){
if($arr[$j] > $arr[$j+1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
var_dump(bubble($arr));
冒泡排序的优化:
对于其中进行判断的语句如果没有进入则,说明已经是有序的
$arr = [1, 21, 13, 4, 15, 26, 17, 8];
function bubble($arr)
{
$size = count($arr);
$change = 1;
for($i=0; $i<$size; $i++){
for($j=0; $j<$size-$i-1; $j++){
if($arr[$j] > $arr[$j+1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
$change = 0;
}
}
if($change == 1){
break;
}else{
$change = 1;
}
}
return $arr;
}
var_dump(bubble($arr));