使用PHP实现一个快速排序算法

  介绍

今天就跟大家聊聊有关使用PHP实现一个快速排序算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

概念

这里借用百度百科的一张图来,非常形象:

使用PHP实现一个快速排序算法

快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割,把大的元素数值放到一个临时数组里,把小的元素数值放到另一个临时数组里(这个分割的点可以是数组中的任意一个元素值,一般用第一个元素,即美元阵列[0]),然后继续把这两个临时数组重复上面拆分,最后把小的数组元素和大的数组元素合并起来。这里用到了递归的思想。

<强> PHP实现

/*,,,,快速排序*/function 快速排序(数组){,,,如果(!收取(阵列[1])美元),,,,,,,,return 美元数组,,,,,mid 美元;=,数组[0];美元,//获取一个用于分割的关键字,一般是首个元素,,,,leftArray 美元;=,数组(),,,,,,rightArray 美元;=,数组();   ,,,foreach (array 美元;as  $ v),,,,{,,,,,,,如果(v 美元;祝辞,中期美元),,,,,,,,,,,,美元rightArray [],=, v美元;,,//把比美元中期大的数放到一个数组里,,,,,,,,如果(v 美元;& lt;,中期美元),,,,,,,,,,,,美元leftArray [],=, v美元;,,,//把比美元中期小的数放到另一个数组里,,,,}   ,,,leftArray 美元;=,快速排序($ leftArray);,//把比较小的数组再一次进行分割,,,,美元leftArray[],=,中期美元;,,,,,,,,//把分割的元素加到小的数组后面,不能忘了它哦   rightArray 美元,,,,=,快速排序($ rightArray);,,//把比较大的数组再一次进行分割,,,,return  array_merge (leftArray, rightArray美元);,,//组合两个结果}

<强>与冒泡算法对比

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

a 美元;=,用于(范围(3000),1500);,,//甚至在冒泡算法超过1600个元素的时候会出现内存不足的提示,但这里为了测出两个之间的差别大小,,就设置成1500了,保证冒泡算法也能执行完毕.shuffle(美元);,,//获取已经打乱了顺序的数组t1 美元;=,microtime(真正);快速排序(美元);,,//快速排序t2 美元;=,microtime(真正);echo  ((t2 - t1美元)* 1000)强生# 39;ms

运行结果:

12.10880279541 ms   772.64094352722毫秒

看完上述内容,你们对使用PHP实现一个快速排序算法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

使用PHP实现一个快速排序算法