algorithm - 决定哪种排序算法最有效的真实世界示例

标签 algorithm sorting time-complexity space-complexity

我冒着在得到答案之前关闭这个问题的风险,但我真的很想知道答案。就这样吧。


我目前正在尝试学习算法,我开始理解它本身但无法与之相关。

我了解时间复杂度空间复杂度。我也理解一些基于伪代码的排序算法

排序算法如

  1. 冒泡排序
  2. 插入排序
  3. 选择排序
  4. 快速排序
  5. 合并排序
  6. Heapsort(一些)

我也知道Best CaseWorst Case 场景(一般情况没那么多)。


一些网上相关的引用资料

  • Nice place它以图形方式显示了上述所有内容。
  • This也让我有了很好的理解。

但我的问题是 - 有人可以给我真实世界的例子这些排序算法是在哪里实现的吗。

最佳答案

随着元素数量的增加,您将使用更复杂的排序算法。后来的排序技术具有更高的初始开销,因此您需要对大量元素进行排序以证明该成本是合理的。如果您只有 10 个元素,冒泡排序或插入排序将比合并排序或堆排序快得多。

对于较小的嵌入式设备(例如电视 Remote 或手机)来说,空间复杂度是一个重要的考虑因素。您没有足够的空间在这些设备上执行诸如堆排序之类的操作。

数据库使用外部合并排序对太大而无法完全加载到内存中的数据集进行排序。这种排序的驱动因素是磁盘 I/O 数量的减少。

Good bubble sort discussion ,还有许多其他因素需要考虑,这些因素会影响时间和空间的复杂性。

Sorting-Algorithms.com

关于algorithm - 决定哪种排序算法最有效的真实世界示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022756/

相关文章:

arrays - 找出 m 和 n 之间的所有整数,这些整数的平方和本身就是一个平方

linux - 排序在 bash 脚本中不起作用

c# - 如何在数组中找到最大值

java - 什么是 java.util.Random.next(n) 的 O(n)

algorithm - 多次递归算法的时间复杂度

c - 错误的运动声明

python - 根据字符将 Python 字符串列表拆分为单独的列表

python - 有效交换 python 字典的键和值,其中值包含一个或多个元素

java - 根据对象的变量对 HashMap 中的对象集合进行排序

java - 使用大整数时间复杂度的递归斐波那契