猿问

这个算法比 php sort() 更快吗?

我的算法比 php sort() 更快吗?


某物:


        $a = array(0,3,4,2,7,6,6,8,6,1);

        $z = count($a)-1;

        for($i = 0;$i < $z; $i++){

           if($a[$i] > $a[$i+1]){

              $temp = $a[$i];

              $a[$i] = $a[$i+1];

              $a[$i+1] = $temp;

              $i = -1;

           }   

        }

        echo "<pre>";

        print_r($a);

        echo "</pre>";

与 php sort() 比较...让我知道你的结果,因为我的网络不好...


holdtom
浏览 80回答 1
1回答

手掌心

正如PHP 使用什么排序算法?,内置的排序算法是Quicksort。快速排序的平均性能为 O(n log n)。您的算法类似于冒泡排序。其平均性能为O(n 2 )。但是,由于您的代码在每次交换后都会返回到开头,这是不必要的,因此它甚至比冒泡排序更糟糕。对于大型数组,快速排序将比冒泡排序快得多。此外,该sort()函数是用 C 代码实现的,该代码被编译为机器代码。使用 PHP 编写的排序算法会给 PHP 解释器带来额外的开销。您还有许多不必要的数组$i和$z,它们应该只是普通变量。$a = array(0,3,4,2,7,6,6,8,6,1);$z = count($a)-1;for($i = 0;$i < $z; $i++){    if($a[$i] > $a[$i+1]){        $temp = $a[$i];        $a[$i] = $a[$i+1];        $a[$i+1] = $temp;        $i = -1;    }   }
随时随地看视频慕课网APP
我要回答