宝哥软件园

PHP快速排序详解

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

概念

这里有一张借用百度百科的图片,非常生动:

快速排序是冒泡算法的优化。他的思路是先将数组进行划分,将大的元素值放入一个临时数组中,将小的元素值放入另一个临时数组中(这个划分的点可以是数组中的任意元素值,一般使用第一个元素,即$array[0]),然后继续反复拆分这两个临时数组,最后将小数组元素与大数组元素合并。这里使用了递归的思想。

PHP实现

复制代码如下:/*快速排序*/

函数quickSort($array){ if(!isset($array[1])返回$ array;$ mid=$ array[0];//获取一个用于分段的关键字,通常第一个元素$ left array=array();$ right array=array();

foreach($ array as $ v){ if($ v $ mid)$ right array[]=$ v;//将大于$mid的数字放入数组if($ v $ mid)$ left array[]=$ v;//将小于$mid的数字放入另一个数组中}

$ left array=quick sort($ left array);//再次划分较小的数组$ left array[]=$ mid;//把分割好的元素加到小数组后面,别忘了

$rightArray=快速排序($ right array);//再次拆分较大的数组返回array _ merge ($ leftarray,$ right array);//合并两个结果}

与冒泡算法相比

这里我和之前写的冒泡算法实现的排序做了一个比较,可以看到这个算法比冒泡算法效率要高很多。

复制代码如下: $ a=array _ rand(范围(1,3000),1,500);//即使冒泡算法超过1600个元素,也会出现内存不足的提示,但为了衡量两者的区别,将其设置为1500,以确保冒泡算法可以执行。洗牌(美元);//获取乱序数组$ t1=microtime(true);快速排序(美元);//快速排序$t2=微时间(true);echo($ T2-$ t1)* 1000。msbr/';

要求('。/Mao pao . PHP ');//这里,我引用泡泡算法排名$t1=microtime(真);毛袍(一美元);//冒泡$ T2=micro time(true);echo($ T2-$ t1)* 1000。ms ';

运行结果:

按照以下步骤复制代码:ms . 47870 . 88888888861

更多资讯
游戏推荐
更多+