Big o 运行时间的大Oh分析?
对于下面的每个程序片段,请对运行时间进行详细分析。我有两个问题,我不能100%确定是否有问题,有人能帮我吗 片段1:Big o 运行时间的大Oh分析?,big-o,Big O,对于下面的每个程序片段,请对运行时间进行详细分析。我有两个问题,我不能100%确定是否有问题,有人能帮我吗 片段1: for( int i = 0; i < n; i++ ) for( int j = 0; j < n * n; j++ ) for( int k = 0; k < j; k++ ) sum++; lets say m = n^2 Sigm
for( int i = 0; i < n; i++ )
for( int j = 0; j < n * n; j++ )
for( int k = 0; k < j; k++ )
sum++;
lets say m = n^2
Sigma(i=0...n) m Sigma(j=0.....m) j
=> n * (m(m+1)/2)
=> n ^ 5
回答:^5上不太确定n*n
片段2:
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= i * i; j++ )
if (j % i == 0)
for( int k = 0; k < j; k++)
sum++;
last loop runs for i-1 times ...
Sigma(i=0...n) Sigma(j=0.....i-1) Sigma(k=0.....j) k
approximately its Sigma(i=0...n) i^2
~=> n^3
回答:在^4上,分解每个循环的问题空间。从最外面的环开始。循环到底是为了什么 对于第一个问题,我们有以下模式 外部循环将运行n次。 外部内部循环将运行n2次,不受内部循环当前值的限制。 最里面的循环将运行到j次,这导致它被外部内部循环的当前值绑定。 你的所有步骤都是线性的,这意味着你将以线性的方式从0到结束条件。 下面是总和的实际情况 那么,这将转化为什么呢?你得把总数摊开。不过不会是5点 对于第二个问题,我们有以下模式 外环最多运行n次,包括n次。 外-内循环最多运行i2次,包括i2次。 在j%i==0的条件下,最里面的循环最多运行j次。这意味着并非每次都执行最内部的循环。 我把这个问题留给你解决。您必须采取展开和并将其减少为代数对应项的方法。对于片段1:
for( int i = 0; i < n; i++ )
for( int j = 0; j < n * n; j++ )
for( int k = 0; k < j; k++ )
sum++;
lets say m = n^2
Sigma(i=0...n) m Sigma(j=0.....m) j
=> n * (m(m+1)/2)
=> n ^ 5
回答:在^5上
对于片段2:
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= i * i; j++ )
if (j % i == 0)
for( int k = 0; k < j; k++)
sum++;
last loop runs for i-1 times ...
Sigma(i=0...n) Sigma(j=0.....i-1) Sigma(k=0.....j) k
approximately its Sigma(i=0...n) i^2
~=> n^3
回答:在^3上,对于第一个循环,您循环n*n*n*1+2+…+n*n=n^3*nn+1/2=n^3*n^2+n+1/2=n^5+…=>在^5上。关于第二个,你的问题是什么?我只是想知道这是否是正确的答案??我不相信第一个循环是n^5,因为CAS系统似乎给了我一个不同的绘制循环的结果。我不能完全确定的第二个循环是n^4,因为最里面的循环并不是每次都执行。我在计数器长度中做了一个错误的假设,thnx用于指向!因为第二个循环只考虑i^2/i-1次,所以我们求和直到i-1