多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
在这篇文章里,我将向大家介绍用PHP写的排序算法的测试。 以下是14种排序算法: 快速排序 计数排序 梳排序 堆排序 归并排序 希尔排序 选择排序 插入排序 地精排序 联合冒泡排序 鸡尾酒排序 冒泡排序 奇偶排序 使用标志的冒泡排序 算法不是按字母排序,而是按照它们进行8千个元素排序时整体速度递减来排序。 以下是用到的数组的大小: 1 100 200 400 600 800 1000 5000 10000 15000 20000 25000 30000 每次测量都用不同大小的数组,然后传入排序函数。 第一种情况下,数组被随机填充(1,N)之间的值,其中N指数组的大小。 第二种情况下,数组被随机填充(1,PHP_INT_MAX)之间的值,其中PHP_INT_MAX是指当前系统中INT类型的最大值,在我的系统中为2^63或大约为9.2233720368548E+18。 每种测试进行3次,然后取其算术平均值。 1000个元素的数组 在当前数组大小的所有算法排序情况。 30000个元素的数组 此时,5种最快的算法进行测试:计数排序,快速排序,梳排序,堆排序和归并排序。 200000个元素的数组 此时,5种最快的算法进行测试:计数排序,快速排序,梳排序,堆排序和归并排序。 2000000个元素的数组 在最后一轮2000000个元素的测试中,只有2种算法进行测试:计数排序和快速排序。 总结 快速排序是实至名归的好算法。计数排序在小值范围里表现良好;其他情况因为低内存而应 付不来。鸡尾酒排序对于随机值是一个坏选择。冒泡排序及其变形并不适合实际应用。 所有算法的源代码+结果:https://drive.google.com/file/d/0B63HSL7JD630VWdSSFgwdHR5RkU/edit?usp=sharing 使用内置排序函数是一个有趣的练习。使用解释型的PHP来写排序函数永远也快不过sort() 采用的C变体。 原文链接: ahwoobachairiesaas 翻译: 伯乐在线 - hoikin-yiu 译文链接: http://blog.jobbole.com/68774/