Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 分析程序_Algorithm_Analytics - Fatal编程技术网

Algorithm 分析程序

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 )

我想知道是否有人能向我解释分析程序的语义。我知道如何做简单的,但还有一些更复杂的我不知道怎么做。例如,这里是我书中的一个问题。我们得到了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 )
              ++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个问题同时进行。它们都是相似的,所以问一个,等待答案,阅读,试着理解。用你刚学到的知识来回答你的下一个问题