作为家庭作业,我得到了以下8个代码片段来分析,并为运行时间给出了一个Big-Oh符号。有没有人能告诉我我是不是走对了?
//Fragment 1
for(int i = 0; i < n; i++)
sum++;我在考虑片段1的O(N)
//Fragment 2
for(int i = 0; i < n; i+=2)
sum++;O(N)也适用于片段2
//Fragment 3
for(int i = 0; i < n; i++)
for( int j = 0; j < n; j++)
sum++;片段3的O(N^2)
//Fragment 4
for(int i = 0; i < n; i+=2)
sum++;
for(int j = 0; j < n; j++)
sum++;O(N)表示片段4
//Fragment 5
for(int i = 0; i < n; i++)
for( int j = 0; j < n * n; j++)
sum++;片段5的O(N^2),但n*n有点让我迷惑,所以我不太确定
//Fragment 6
for(int i = 0; i < n; i++)
for( int j = 0; j < i; j++)
sum++;对于片段6也是O(N^2)
//Fragment 7
for(int i = 0; i < n; i++)
for( int j = 0; j < n * n; j++)
for(int k = 0; k < j; k++)
sum++;O(N^3)表示片段7,但n*n再次将我抛在脑后
//Fragment 8
for(int i = 1; i < n; i = i * 2)
sum++;片段8的O(N)
发布于 2008-10-20 18:18:09
片段7是O(n^5),而不是当前接受的注释声称的O(n^4)。否则,它是正确的。
发布于 2008-10-19 19:23:07
对于情况8,试着写出N的一些值的迭代次数,看看模式是什么样子的……它不是O(N)
发布于 2008-10-19 18:56:40
你似乎走在正确的轨道上。关于N*N,你认为它会有什么影响?它是N的另一个因子,所以它可能是一个更高的阶数。
只是一个警告,我看到了另一个像这样的帖子,它被极大地否决了。注意。Here就是那篇文章。
https://stackoverflow.com/questions/216796
复制相似问题