algorithm - 为什么我们对排序一个已经排序的文件需要多长时间感兴趣?

标签 algorithm sorting

这是在谷歌面试中问到的,我没有得到答案。更糟糕的是没有得到问题。

在讨论排序算法时,我们讨论的是已排序文件的行为。为什么我们对排序一个已经排序的文件需要多长时间感兴趣?简要解释您的答案?

最佳答案

假设问题是关于已排序的输入(不一定是文件)的行为,不同的排序算法在收到已排序的输入时表现不同:

  • 在插入排序的情况下,你会得到最好的情况,即 O(n)
  • 在没有随机化的情况下实现快速排序,已经排序的输入将导致最坏的情况! (O(n^2))

这两个简单示例表明,您必须在算法分析中包括排序算法对已排序输入的行为。

主要原因是在实际应用中,用户的输入往往以排序或接近排序的形式出现,举几个例子:

  • almost-chronological data - 按时间顺序接收的数据,但偶尔会有一些元素位置不对(见下面的链接)
  • 自然排序 - 当您增加用户数据库时,您可能会为新用户分配更高的 ID

另请参阅:

关于algorithm - 为什么我们对排序一个已经排序的文件需要多长时间感兴趣?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745920/

相关文章:

java - 在 Java 中排序和显示数组中的条目

c++ - 模板集合的不同排序方法

java - Java队列的实现

r - 我有一个可以运行的 mapply 函数 - 如何将其转换为 mlply?

javascript - JS - 为什么 Codewars 挑战的一项测试返回未定义,而其他 104 项测试却通过了?

java - 使用 TreeMap 对 SharedPreferences 进行排序 - 未正确排序

algorithm - Prolog 中的 Tron lightcycles AI

python - 平铺固定大小的矩形以覆盖给定的点集

c++ - 如何改进这些嵌套的 for 循环

c++ - 在 C++ 中创建自定义比较器