【问题标题】:Big O of fixed size array linear search固定大小数组线性搜索的大O
【发布时间】:2019-04-22 15:21:40
【问题描述】:

const a = Array.apply(null, Array(50)).map((x, i) => i);

这个数组永远不会改变,它总是包含 50 个元素。

a.includes(x)(线性搜索)会是 O(n) 或 O(50) 还是技术上的 O(50),但我们称之为 O(n)

【问题讨论】:

  • O(50) 与 O(1) 相同。

标签: algorithm big-o computer-science


【解决方案1】:

不可能是 O(N),因为 N 意味着存在影响运行时的某个变量。由于数组总是有 50 个元素,它总是循环 50 次而不是可变的次数——所以这个函数是 O(50),我们通常将其简化为 O(1)——它代表所有的恒定时间函数。

【讨论】:

    【解决方案2】:

    Big-O 表征函数。所以答案是你可以选择。如果您将要描述的函数定义为“作为 n 的函数的最坏情况比较数,元素数”,那么答案是 O(n)。在您的情况下,n 恰好是 50,但是其他人针对不同的 n 值解决了相同的问题,最坏情况下的运行时间将随输入大小线性变化。如果将其定义为“搜索固定长度数组的比较次数”,那么答案是 O(1)。 O(50) 与 O(1) 的函数集完全相同。

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多