据说,O(1)操作的一个示例是访问数组中的元素。根据一种来源,可以以下列方式定义O(1):
[Big-O of 1]表示算法的执行时间不取决于输入的大小。其执行时间是恒定的。
然而,如果想要访问数组中的一个元素,操作的效率难道不取决于数组中元素的数量吗?例如
int[] arr = new int[1000000];
addElements(arr, 1000000); //A function which adds 1 million arbitrary integers to the array.
int foo = arr[55];
我不明白最后一句话怎么能被描述为O(1)运行; 数组中的1000000个元素难道不会影响操作的运行时间吗?查找元素55肯定比查找元素1要花费更长的时间,对吧?如果有什么区别的话,这看起来像O(n)。
我确信我的推理是有缺陷的,但我只是想弄清楚“如何说它运行在O(1)时间复杂度”?
i
。 - njlarsson