排序算法效率

-4 c java haskell quicksort

我想问一个普遍的问题.

我正在比较C,Java和Haskell上的排序运行时间.提供相同级别的优化(当然可能会有所不同),哪种语言应该具有最快的运行时间,哪一种最慢(理论上)?他们都将阅读相同的文本文件并按字母顺序排序单词.如果我能得到一个很好的深度解释,并且非常感激.

谢谢〜

Ste*_*n C 5

对此没有"理论上"的答案.没有合理的"理论"可以让你做出准确的预测.

此外,程序语言表现的"理论"比较的整体思想是荒谬的.性能比较是关于在实际(非理论)数据集上运行在实际(非理论)机器上的实际(非理论)编译器编译的实际(非理论)程序.


如果您要求"经验法则"猜测,基于典型应用程序,典型编译器,程序员技能的等效级别以及所需的程序员时间,则:

  • C可能是最快的
  • Java可能是C速度的1/3到1倍
  • Haskell可能是Java速度的1/2到1倍.

(根据"基准游戏"网站截至2015年2月22日所说的内容.)

但是 ......对于某些应用程序来说可能会有所不同,这在很大程度上取决于编译器的成熟度和程序员在各自语言中的技能.

此外 ......一个成熟的软件工程师/项目经理不会选择一个项目的编程语言,而只选择哪个项目能够获得最快的结果.其他因素通常比原始速度更重要.

  • 这在很大程度上取决于程序员的技能以及他们选择的技术.完全有可能在Haskell中编写一个用于对未装箱的可变向量进行排序的过程,该过程与C中最好的一样快.然而,大多数Haskell程序员都不喜欢*编写那么多代码,并且没有多少用处无论如何. (7认同)