请原谅我故意说的话
下面是一个小程序节选:
for i=1 to n
j= 0;
while(j<=n);
j=j+1;
如果我必须找到这段代码的复杂性(Big):
我将首先计算内循环将执行多少次,在本例中是n+1次数,因为从1到n是n次,而且由于j是0,所以它会添加到while循环中。因此,在时间循环的总n+1次数中。
外部for循环将执行的次数为n次,因为从1到n,总计数为n。因此,总计为n+1+n是2n+1。
舍弃所有常量,它是大O(n)。
这是正确的吗?我找到这个例子的网页上说,外部循环将运行n(n+1)/2时间。我不明白这点。请帮帮我!
发布于 2013-06-01 00:36:58
不是的。对于i
获取的每个值(其中有n
),您可以运行while
(内部)循环n+1
times (j=0、j=1、...j=n)。
因此,执行行j=j+1
的总次数是n*(n+1)
,它位于O(n^2)
中。
https://stackoverflow.com/questions/16870389
复制相似问题