①代码如下:
$arr=[6,66,22,55,79,43,12];
function bubbleSort(&$arr){
$length=count($arr);
for($i=1;$i<$length;$i++){
for($j=0;$j<$length-$i;$j++){
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
bubbleSort($arr);
print_r($arr);
打印结果如下:
Array ( [0] => 6 [1] => 12 [2] => 22 [3] => 43 [4] => 55 [5] => 66 [6] => 79 )
②代码如下:
$arr=[6,66,22,55,79,43,12];
function bubblingSort($arr){//使用引用传值的方法,改变数组的内容
$checkPoint=0;//数组循环的次数
while(true){//调用check方法,返回交换的次数
$swapCount=check($arr,$checkPoint);
$checkPoint++;
if($swapCount<=0) {//没有交换时跳出循环,返回数组
return $arr;
}
}
}
function check(&$arr,$checkPoint){//对数组进行检测,是否进行数据交换
$swapCount=0;//循环数据,将数据替换//$i数组的总数
for($i=count($arr)-1;$i>$checkPoint;$i--){
if($arr[$i]<$arr[$i-1]){//比较二个数组中的二个数据
swap($arr,$i);//小于时数据交换调用swap方法
$swapCount++;//交换次数进行+1操作
}
}
return $swapCount;//返回交换的次数
}
function swap(&$arr,$i){//数据交换
$tem=$arr[$i];
$arr[$i]=$arr[$i-1];
$arr[$i-1]=$tem;
}
print_r(bubblingSort($arr));
打印结果如下:
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 )