我想了解时间复杂度。有人here提到时间复杂度为O(n),请找到下图:由于它是N(N+1)/2
,不应该是O( n ^ 2)因为N(N+1)
是乘法?如果我误解了某些事情,请纠正我。
答案 0 :(得分:4)
上面的代码计算 n(n + 1)/ 2,但这并不意味着花费时间 O(n 2 )。例如,请考虑以下代码:
int x = n*n;
此代码计算n 2 ,但它在时间O(1)中运行。
希望这有帮助!
答案 1 :(得分:1)
你误解了答案:当作者说"自然数1到N的总和是N *(N-1)/ 2"时,他提供了一个封闭的表达式来计算总和如果所有100个号码都存在。该值在O(1)中计算。
计算给出给我们的列表中99个数字的总和需要O(N)。
答案 2 :(得分:1)
复杂性是算法所需资源的度量。在这种情况下,如果列表的大小n
加倍,那么所需的时间也将加倍。换句话说,所需的时间资源与n
成比例。这表示为O(n)。每个步骤需要多长时间无关紧要;唯一重要的是与输入相关的总时间量。