堆排序还是快速排序更好?

时间:2012-07-29 19:44:29

标签: algorithm sorting

我给了一个公司的书面报告。 我怀疑有人可以帮助我吗?

  

这是以下最快的排序算法?
  a - 冒泡分类
  b - shell sort
  c - 堆排序
  d - 快速排序

我很困惑b / w快速排序和堆排序的时间复杂度都是O(nlogn)。

3 个答案:

答案 0 :(得分:10)

没有“最快”的排序算法。

算法的理论性能总是取决于输入数据。在各自的最坏情况中,堆排序比快速排序快。在一般情况下,快速排序更快。可能为每种算法编制一个定制的最佳案例,使其优于其他算法。

这实际上就是 Introsort 这样的“混合”算法存在的原因:Introsort以快速排序开始,如果它看到快速排序正在与此特定输入进行斗争,则切换到堆排序

最重要的是,任何算法的实际性能都会受到它在特定硬件平台上的工作效果的显着影响。如果后者与硬件的属性更好地“同步”,理论上“快速”算法可能会失去原始和“慢”算法。

答案 1 :(得分:4)

请参阅Wikipedia: Heapsort

  

Heapsort:虽然在大多数机器上的实践比实施的快速排序有点慢,但它具有更有利的最坏情况O(n log n)运行时

的优势

答案 2 :(得分:2)

在一般情况下:快速排序,因为其O(nlgn)运行时间的常数更好。

在最坏的情况下:Heap-Sort,因为在最坏的情况下,Quick-Sort的运行时间是O(n 2 )。