14种排序算法和PHP数组
-
快速排序
-
计数排序
-
梳排序
-
堆排序
-
归并排序
-
希尔排序
-
选择排序
-
插入排序
-
地精排序
-
联合冒泡排序
-
鸡尾酒排序
-
冒泡排序
-
奇偶排序
-
使用标志的冒泡排序
算法不是按字母排序,而是按照它们进行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种算法进行测试:计数排序和快速排序。
总结
http://mp.weixin.qq.com/s/fbLzqVJiY6DZjVDPmyTQLg
快速排序是实至名归的好算法。计数排序在小值范围里表现良好;其他情况因为低内存而应 付不来。鸡尾酒排序对于随机值是一个坏选择。冒泡排序及其变形并不适合实际应用。