冒泡排序数组,如何使这个php冒泡排序代码更好或更有效?

冒泡排序数组,如何使这个php冒泡排序代码更好或更有效?,php,Php,如何使这个php冒泡排序代码更好或更有效 // bubble sort for $AR for($i = count($AR)-1 ; $i <= 1; $i--) for($j = 0; $j < $i; $j++) { if($AR[$j] > $AR[$j+1]) { $t = $AR[$j]; $AR[$j] = $AR[$j+1]; $AR[$j+1] = $t; } //

如何使这个php冒泡排序代码更好或更有效

// bubble sort for $AR 
for($i = count($AR)-1 ; $i <= 1; $i--) 
   for($j = 0; $j < $i; $j++) {
      if($AR[$j] > $AR[$j+1]) {
          $t = $AR[$j];
          $AR[$j] = $AR[$j+1];
          $AR[$j+1] = $t;
       } //if
   } //for j 
//对$AR进行气泡排序
对于($i=计数($AR)-1;$i$AR[$j+1]){
$t=$AR[$j];
$AR[$j]=$AR[$j+1];
$AR[$j+1]=$t;
}//如果
}//对于j

算法是算法,如果您进行一些修改并获得更好的性能,您将不再使用冒泡排序算法,因为它会发生变化

如果你想提高性能,你需要改变算法,一般认为是最好的排序之一。以php实现为例:

// QuickSort Algorithm function
function quickSort(array $array) {
    if (count($array) == 0) {
        return $array;
    }
    $pivot = $array[0];
    $left = $right = array();
    for($i = 1; $i < count($array); $i ++) {
        if ($array[$i] < $pivot) {
            $left[] = $array[$i];
        } else {
            $right[] = $array[$i];
        }
    }
    return array_merge(quickSort($left), array(
            $pivot
    ), quickSort($right));
} 
//快速排序算法函数
函数快速排序(数组$array){
if(计数($array)==0){
返回$array;
}
$pivot=$array[0];
$left=$right=array();
对于($i=1;$i
当然,这始终取决于情况,如果您对其进行优化,您的代码将基于该算法,但不会使bubble算法更好或更有效

检查一下,php中几乎所有类型的排序都有很好的文档记录


希望这对你有帮助

算法是算法,如果您进行一些修改并获得更好的性能,您将不再使用气泡排序算法,因为它会发生变化

如果你想提高性能,你需要改变算法,一般认为是最好的排序之一。以php实现为例:

// QuickSort Algorithm function
function quickSort(array $array) {
    if (count($array) == 0) {
        return $array;
    }
    $pivot = $array[0];
    $left = $right = array();
    for($i = 1; $i < count($array); $i ++) {
        if ($array[$i] < $pivot) {
            $left[] = $array[$i];
        } else {
            $right[] = $array[$i];
        }
    }
    return array_merge(quickSort($left), array(
            $pivot
    ), quickSort($right));
} 
//快速排序算法函数
函数快速排序(数组$array){
if(计数($array)==0){
返回$array;
}
$pivot=$array[0];
$left=$right=array();
对于($i=1;$i
当然,这始终取决于情况,如果您对其进行优化,您的代码将基于该算法,但不会使bubble算法更好或更有效

检查一下,php中几乎所有类型的排序都有很好的文档记录


希望这对你有帮助

如果你想让这个更有效,你可以把

count($AR)-1
在for循环中输入一个变量,因为它将在每次迭代中完成。因为计数是O(1),所以这是一个小的加速,但它是一个东西。
旁注:在php7示例中,如果在循环时修改数组,则会产生副作用:

$a = [1,2,3,4];  
$b = 1;   
for ($i = 0;$i<count($a);$i++) {  
unset($a[$i]);  
echo $i . "\n";  
}  
var_dump($a);  
$a=[1,2,3,4];
$b=1;
对于($i=0;$i
int(3)
[3] =>
int(4)
}


请注意,它如何只转到1

如果您想使此项更有效,可以将

count($AR)-1
在for循环中转换为变量,因为它将在每次迭代中完成。因为count是O(1),所以这是一个小的加速,但它是 旁注:在php7示例中,如果在循环时修改数组,则会产生副作用:

$a = [1,2,3,4];  
$b = 1;   
for ($i = 0;$i<count($a);$i++) {  
unset($a[$i]);  
echo $i . "\n";  
}  
var_dump($a);  
$a=[1,2,3,4];
$b=1;
对于($i=0;$i
int(3)
[3] =>
int(4)
}


请注意,它是如何只转到1的,因为它是这样的,您的代码根本不会做任何事情。您的第一个循环条件是错误的。经过更正,它看起来像一个完美的气泡排序

// bubble sort for $AR 
for($i = count($AR)-1 ; $i >= 1; $i--) 
   for($j = 0; $j < $i; $j++) {
      if($AR[$j] > $AR[$j+1]) {
          $t = $AR[$j];
          $AR[$j] = $AR[$j+1];
          $AR[$j+1] = $t;
       } //if
   } //for j 
//对$AR进行气泡排序
对于($i=计数($AR)-1;$i>=1;$i--)
对于($j=0;$j<$i;$j++){
如果($AR[$j]>$AR[$j+1]){
$t=$AR[$j];
$AR[$j]=$AR[$j+1];
$AR[$j+1]=$t;
}//如果
}//对于j

就目前情况而言,您的代码根本无法执行任何操作。您的第一个循环条件错误。如果纠正了这一点,它看起来就像一个完美的冒泡排序

// bubble sort for $AR 
for($i = count($AR)-1 ; $i >= 1; $i--) 
   for($j = 0; $j < $i; $j++) {
      if($AR[$j] > $AR[$j+1]) {
          $t = $AR[$j];
          $AR[$j] = $AR[$j+1];
          $AR[$j+1] = $t;
       } //if
   } //for j 
//对$AR进行气泡排序
对于($i=计数($AR)-1;$i>=1;$i--)
对于($j=0;$j<$i;$j++){
如果($AR[$j]>$AR[$j+1]){
$t=$AR[$j];
$AR[$j]=$AR[$j+1];
$AR[$j+1]=$t;
}//如果
}//对于j

也许这对这类问题更好。检查这一个的回答,也许这一个可以帮助你。最有效的是:-)我知道自从这个问题以来已经下了很多雨,但是如果有人想在不使用@Asur推荐的其他算法的情况下使冒泡排序更有效(这是最好的选择),他们应该知道有两个非常有名的技巧可以加速算法->也许这对这类问题更好。检查这一个的回答,也许这一个可以帮助你。最有效的是:-)我知道自从这个问题以来,雨下了很多,但是,如果有人想在不使用@Asur推荐的另一种算法的情况下使冒泡排序高效(这是最好的选择),他们应该知道有两种非常著名的技巧可以加速算法->我不同意你的观点,对于不同的情况,您有不同的排序算法,选择正确的算法取决于开发人员。你应该想优化你的算法以获得尽可能好的结果。@baboizk是的,当然,这总是取决于情况,这就是为什么我通常说的,如果你优化它(就像通常做的那样),你将以该算法为基础编写代码,但不会使bubble算法更好,正如我所见,但你有一个观点。我不同意你的观点,对于不同的情况,您有不同的排序算法,选择正确的算法取决于开发人员。你应该想优化你的算法,以获得尽可能最好的结果。@baboizk是的,当然,它总是取决于情况,这就是为什么我通常说的,如果你优化它(a