Algorithm 分析程序
我想知道是否有人能向我解释分析程序的语义。我知道如何做简单的,但还有一些更复杂的我不知道怎么做。例如,这里是我书中的一个问题。我们得到了6段代码,并被告知要对其进行分析:Algorithm 分析程序,algorithm,analytics,Algorithm,Analytics,我想知道是否有人能向我解释分析程序的语义。我知道如何做简单的,但还有一些更复杂的我不知道怎么做。例如,这里是我书中的一个问题。我们得到了6段代码,并被告知要对其进行分析: (1). sum = 0; for( i = 0; i < n; ++i ) ++sum; (2). sum = 0; for( i = 0; i < n; ++i ) for( j = 0; j < n; ++j )
(1). sum = 0;
for( i = 0; i < n; ++i )
++sum;
(2). sum = 0;
for( i = 0; i < n; ++i )
for( j = 0; j < n; ++j )
++sum;
(3). sum = 0;
for( i = 0; i < n; ++i )
for( j = 0; j < n * n; ++j )
++sum;
(4). sum = 0;
for( i = 0; i < n; ++i )
for( j = 0; j < i; ++j )
++sum;
(5). sum = 0;
for( i = 0; i < n; ++i )
for( j = 0; j < i * i; ++j )
for( k = 0; k < j; ++k )
++sum;
(6). sum = 0;
for( i = 1; i < n; ++i )
for( j = 1; j < i * i; ++j )
if( j % i == 0 )
for( k = 0; k < j; ++k )
++sum;
(1)。总和=0;
对于(i=0;i
我理解1、2和4。那些很简单。我没有得到的是3、5和6
1运行n
次,使其处于Big Oh(n)
。2有两个for
循环,每个循环都运行n
次,因此这一个是Big Oh(n^2)
。这是我以前见过的。内部循环的运行次数与i
的值相同。因此,如果i=1
则循环运行一次,如果i=2
则循环运行两次,模式为1+2+3+…+n
这是模式n(n+1)/2
这意味着这整个过程是在Big Oh(n^2)
中。我不确定如何使用条件中的n*n
执行3。这也是为什么我不确定如何在I*I
也在那里的情况下进行5次。至于6,我们不仅有i*i
,还有一个if
语句,它可能运行,也可能不运行。我该怎么办?有人能解释一下怎么做这些吗?谢谢
更新我有一个关于3的想法。其中的外部for循环运行
n
次,内部for循环运行n^2
次。那么对于那一个,我们会有n*n^2
,也就是n^3
?那么,这一个会在大Oh(n^3)中吗?你找到了第三个。同样的道理也适用于他们所有人。实际上,您的目标是根据n
找到sum
的最终值
对于第五个,即求和:∑i=0n(∑j=0n^2(j))
内部求和为(i2*(i2+1))/2,如下所示
那你有∑i=0n(i2*(i2+1))/2,等于[∑i=0n(i4)+∑i=0n(i2)]/2
这是O(N5)对支配项的看法∑i=0n(i4),你可以把它看作一个积分,所以你只需要增加指数,就得到了N5。第六个问题留作练习,想象一下最后会是什么。不要在一个问题中问三个不同的问题。问一个问题,从答案中学习,如果你得不到答案,问另一个问题,为什么要问三个独立的问题,并在问题板上占据更多的空间?如果你不喜欢这个,那么继续下一个问题。因为这里有规则,其中一个规则就是不要在一个问题中问很多问题。仔细阅读,我没有告诉你污染网站与3个问题同时进行。它们都是相似的,所以问一个,等待答案,阅读,试着理解。用你刚学到的知识来回答你的下一个问题