空间中的固定数组大小为O(n)还是O(1)?

时间:2011-05-03 16:23:17

标签: arrays big-o space-complexity

数组声明如下:
太空中int array[M]O(1)O(n)?其中M是一些固定值。对我来说O(n)是有道理的,因为它不仅仅是一个变量而是整个数组。但后来我认为它可能是O(1)因为我们有一个固定的大小而且它没有改变!

3 个答案:

答案 0 :(得分:4)

如果您的数组具有固定大小且不会随输入的大小而变化,则为O(1),因为它可以表示为c * O(1) = O(1)c 1}}是一些常数。例如,如果您需要一个大小为5的数组来保存算法中的状态,该状态运行超过一百万(或其他任意数字)整数。重要的是MN是独立的。

但是,如果M表示输入的大小或直接取决于输入大小的值(即N/2或其他线性函数),则真正M增长使用N,输入大小为O(N)。一个例子是一个数组,它包含你想要运行算法的所有输入数字(即确定平方和)。

答案 1 :(得分:1)

当M是常数时,我会说O(1)。如果它是O(n),它的大小必须是M的线性函数,在这种情况下不是。

答案 2 :(得分:0)

你得到的其他答案是正确的,正式的是 O(1)

但要仔细考虑“常数”的含义。 O(...)表示法不是用来衡量实际计算机程序的性能,而是用于按复杂程度对算法进行分类。

如果你正在实现一个算法,该算法只对一个对象数组进行一次读取(例如),你可以说“好吧,让我们把元素的数量修改为N”,但这不会移动算法进入O(1)复杂度类,算法仍然是O(n),但是你将测试用例限制在n = N,其中N是固定的。

相关问题