请原谅故意详述
这是一个小程序摘录:
for i=1 to n
j= 0;
while(j<=n);
j=j+1;
如果我必须找到此代码的复杂性(Big O):
我将首先计算内循环将执行多少次,在这种情况下是n + 1次,因为从1到n,它是n次,因为j是0,所以它增加了while循环。所以while循环总共n + 1次。
外部for循环执行的次数是n次,因为从1到n,总计数为n。 因此,总数是n + 1 + n是2n + 1.
丢弃所有常数,这是大O(n)。
这是对的吗?我发现这个例子的网页说外环将运行n(n + 1)/ 2次。我不明白这一点。请帮忙!
答案 0 :(得分:2)
没有。
对于每个值i
正在获取(并且有n
个),您运行while
(内部)循环n+1
次(j = 0,j = 1, ... J = N)。
因此,j=j+1
行n*(n+1)
的总次数为O(n^2)