php数组测试,测试评估:14种排序算法和PHP数组

在这篇文章里,我将向大家介绍用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个元素的数组

在当前数组大小的所有算法排序情况。

x372715.png.pagespeed.ic.muJVmPi4Uv.jpg

xa311c4.png.pagespeed.ic.3OIsXblBBh.jpg

30000个元素的数组

此时,5种最快的算法进行测试:计数排序,快速排序,梳排序,堆排序和归并排序。

xba8976.png.pagespeed.ic.xqFifVTJeg.jpg

xe5cbdd.png.pagespeed.ic.wUU3UFI5gT.jpg

200000个元素的数组

此时,5种最快的算法进行测试:计数排序,快速排序,梳排序,堆排序和归并排序。

x62ffb3.png.pagespeed.ic.SRmXh6cpfZ.jpg

bdb51d.png

2000000个元素的数组

在最后一轮2000000个元素的测试中,只有2种算法进行测试:计数排序和快速排序。

e882b7.png

cf4799.png

总结

快速排序是实至名归的好算法。计数排序在小值范围里表现良好;其他情况因为低内存而应 付不来。鸡尾酒排序对于随机值是一个坏选择。冒泡排序及其变形并不适合实际应用。

所有算法的源代码+结果:https://drive.google.com/file/d/0B63HSL7JD630VWdSSFgwdHR5RkU/edit?usp=sharing

使用内置排序函数是一个有趣的练习。使用解释型的PHP来写排序函数永远也快不过sort() 采用的C变体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值