固定大小数组线性搜索的大O

时间:2019-04-22 15:21:41

标签: algorithm big-o computer-science

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

此数组将永远不会更改,它将始终包含50个元素。

a.includes(x)(线性搜索)是O(n)还是O(50)或从技术上讲是O(50),但我们称它是O(n)

2 个答案:

答案 0 :(得分:4)

不能为O(N),因为N表示存在某个影响运行时间的变量。由于数组始终是50个元素,因此它将始终循环播放50次,而不是循环可变的次数-因此该函数为O(50),我们通常将其简化为O(1)-,它表示所有恒定时间函数。

答案 1 :(得分:2)

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