今天我在复习一些有关算法的旧笔记,这引起了我的思考。
复杂度
O(1)
意味着函数的执行时间与数据无关。
现在我们假设有一个函数用于将数组中的所有元素相加。
int add(int[] array){
int sum =0;
for (int i=0;i<ARRAY_MAX_SIZE;i++){
sum= sum + (i<array.length?array[i]:0);
}
return sum;
}
其中ARRAY_MAX_SIZE
是数组的最大可能大小。我知道这段代码不够高效,但我不想讨论这个问题。但是操作符+
每次被调用的次数相同,并且不受数据大小的影响。
这是否意味着该函数的复杂度为O(1)?
O(ARRAY_MAX_SIZE)
。如果ARRAY_MAX_SIZE
是一个常数,那么O(ARRAY_MAX_SIZE) == O(1)
。 - Eric