sorting - 时间复杂度: Insertion sort with unique key

标签 sorting data-structures time-complexity

我有一个由 30 个元素组成的随机排序数组,只有 3 个不同的键(TRUEFALSENULL),我想要对其进行排序使用插入排序。时间复杂度是多少?假设最坏情况是 O(n2) 还是假设最好情况是 O(n),因为只有 3 个不同的键?

最佳答案

n 指的是数组的大小,而不是数组的可能元素。因此,复杂度是相同的:

  • 最坏情况:O(n2)
  • 最佳情况:O(n)
  • 平均情况:O(n2)

拥有 3 个不同的元素将减少“插入”阶段必须检查的元素数量,但只会减少一个常数因子。这不会改变渐近运行时。

例如,在平均情况下,它不会检查 n 个元素,而是检查 n/3 元素。这更好,但不是渐近的。

关于sorting - 时间复杂度: Insertion sort with unique key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183297/

相关文章:

c - 如何移除不在栈顶的元素?

time-complexity - 什么是增长顺序以及如何计算它?

java - JAVA中以下方法声明、实例化和初始化数组的时间复杂度有什么区别吗?

algorithm - 在矩阵中查找数字序列的复杂性

c++ - 把最胖的人从重载的飞机上扔下来。

java - 我可以使用 "relative"变量创建 HashMap 吗?

c++ - 根据 size() 排序 vector

dictionary - 如果我只想确定一个值是否存在,我应该使用哪种 Swift 数据结构?

java - 相同的代码为 Java 7 和 8 产生不同的输出

algorithm - 给定一个实数列表。什么是将它们分组在一起以使组中的最大值和最小值小于 5 的好算法?