给出了具有任意大小和一段代码的array [] = {0,2,6,...,1000000}:
Party{
String Name;
@JsonProperty(Contents<Contact>)
Contents<Contact> contacts; // this should change at run time
}
是O(1)是因为它仅打印第一项还是O(n)是因为它打印了n(大小)时间?
答案 0 :(得分:1)
这是O(n),其中n是给定数组的大小。
让我们说打印数组元素需要1秒。
如果数组有1个元素,程序将打印第一个元素1次,因此运行该程序需要1秒钟。
如果数组有10个元素,程序将打印第一个元素10次,因此运行该程序需要10秒钟。
如果数组有100个元素,程序将打印第一个元素100次,因此运行该程序需要100秒。
运行程序所花费的时间随着数组的大小线性增加。因此,算法为O(n)。
答案 1 :(得分:1)
是O(n)。
由于此for
循环的范围是从0到 size ,因此此for
为O(n)。在for
中,它是print array[0]
,即O(1)。
因此整个段变为O(n)x O(1),也就是O(n)。
它将打印第一项 n次,结果为O(n)。
例如,考虑下面的简单分配代码:
for i = 0 to size
a = array[0]
它还会获得第一项 n次,并且显然为O(n)(忽略任何编译器优化)。