php入门-冒泡排序

①代码如下:

$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 )

你可能感兴趣的:(php入门-冒泡排序)