测试评估:14种排序算法和PHP数组_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 测试评估:14种排序算法和PHP数组

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

 2014/5/30 11:59:41    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:Benchmarks:14SortingAlgorithmsandPHPArrays在这篇文章里,我将向大家介绍用PHP写的排序算法的测试。以下是14种排序算法:快速排序计数排序梳排序堆排序归并排序希尔排序选择排序插入排序地精排序联合冒泡排序鸡尾酒排序冒泡排序奇偶排序使用标志的冒泡排序算法不是按字母排序,而是按照它们进行8千个元素排序时整体速度递减来排序。以下是用到的数组的大小
  • 标签:PHP 测试 数组 php数组 算法
class="topic_img" alt=""/>

  英文原文:Benchmarks: 14 Sorting Algorithms and PHP Arrays

  在这篇文章里,我将向大家介绍用 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 种最快的算法进行测试:计数排序,快速排序,梳排序,堆排序和归并排序。

http://kukuruku.co/uploads/images/00/00/01/2014/05/09/bdb51d.png

  2000000 个元素的数组

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

  总结

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

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

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

  翻译: 伯乐在线 - hoikin-yiu

  译文链接: http://blog.jobbole.com/68774/

发表评论
用户名: 匿名