我有一系列问题需要反馈和答案。我将评论我的想法,这不是家庭作业,而是为我的考试做准备。
我的主要问题是确定不同情况下循环的迭代。将如何尝试解决这个问题?
评估运行时间。
Q2。
for(int i =0 ; i < =n ; i++) // runs n times
for(int j =1; j<= i * i; j++) // same reasoning as 1. n^2
if (j % i == 0)
for(int k = 0; k<j; k++) // runs n^2 times? <- same reasoning as above.
sum++;
正确答案:N × N2 × N = O(N^4)
对于以下以下问题,我没有正确答案。
Q3。一个)
int x=0; //constant
for(int i=4*n; i>=1; i--) //runs n times, disregard the constant
x=x+2*i;
我的答案:O(n)
b) 为简单起见,假设 n = 3^k
int z=0;
int x=0;
for (int i=1; i<=n; i=i*3){ // runs n/3 times? how does it effect final answer?
z = z+5;
z++;
x = 2*x;
}
我的答案:O(n)
c) 为简单起见,假设 n = k^2,
int y=0;
for(int j=1; j*j<=n; j++) //runs O(logn)? j <= (n)^1/2
y++; //constant
我的答案:O(logn)
d)
int b=0; //constant
for(int i=n; i>0; i--) //n times
for(int j=0; j<i; j++) // runs n+ n-1 +...+ 1. O(n^2)
b=b+5;
我的答案:O(n^3)
(e)
int y=1;
int j=0;
for(j=1; j<=2n; j=j+2) //runs n times
y=y+i;
int s=0;
for(i=1; i<=j; i++) // runs n times
s++;
我的答案:O(n)
(F)
int b=0;
for(int i=0; i<n; i++) //runs n times
for(int j=0; j<i*n; j++) //runs n^2 x n times?
b=b+5;
我的答案:O(n^4)
(g) 为简单起见,假设对于某个正整数 k,n = 3k。
int x=0;
for(int i=1; i<=n; i=i*3){ //runs 1, 3, 9, 27...for values of i.
if(i%2 != 0) //will always be true for values above
for(int j=0; j<i; j++) // runs n times
x++;
}
我的答案:O (nx log base 3 n?)
(h) 为简单起见,对于某个正整数 k,假设 n = k2。
int t=0;
for(int i=1; i<=n; i++) //runs n times
for(int j=0; j*j<4*n; j++) //runs O(logn)
for(int k=1; k*k<=9*n; k++) //runs O(logn)
t++;
我的答案:nx logn x log n = O(n log n^2)
(i) 为简单起见,对于某些正整数 s,假设 n = 2s。
int a = 0;
int k = n*n;
while(k > 1) //runs n^2
{
for (int j=0; j<n*n; j++) //runs n^2
{ a++; }
k = k/2;
}
我的答案:O(n^4)
(j)
int i=0, j=0, y=0, s=0;
for(j=0; j<n+1; j++) //runs n times
y=y+j; //y equals n(n+1)/2 ~ O(n^2)
for(i=1; i<=y; i++) // runs n^2 times
s++;
我的答案:O(n^3)
(k) int i=1,z=0;while( z < n*(n+1)/2 ){ //算术级数,运行 n 次 z+=i; 我++;}
我的答案:O(n)
(m) 为简单起见,对于某些正整数 s,假设 n = 2s。
int a = 0;
int k = n*n*n;
while(k > 1) //runs O(logn) complexity
{
for (int j=0; j<k; j++) //runs n^3 times
{ a--; }
k = k/2;
}
我的答案:O(n^3 log n)
问题 4
- a) 真 - 因为它的下界为 n^2
- b) 错误 - f(n) 不严格小于 g(n)
- c) 对
- d) True 以 n^10 为界
- e) 错误 - f(n) 不严格小于 g(n)
- f) 对
- g) 对
- h) false - 因为不等于 O(nlogn)
- i) 真的
- j) 不确定
- k) 不确定
- l) 不确定 - 我应该如何尝试这些?*
提前致谢。