在我开始之前澄清一下,这不是家庭作业,而是我正在为考试而学习。我已经给出了以下问题的解决方案。我想要一些建设性的反馈。
感谢在我上一个问题中留下它的人的反馈。下面我给出了为什么我认为答案是这样的详细解决方案。
根据 O(n) 表示法查找运行时间。
int y=0;
for(int j=1; j*j<=n; j++)// runs from 1->j=sqrt(n) times
y++; //constant - c
因此,运行时间为c x n^1/2 = O(n^1/2)
Q2。
int b=0;
for(int i=n; i>0; i--) //runs from n->1
for(int j=0; j<i; j++) // runs from 0 to i
b=b+5; //constant
对于j (1,2...,n)
内部循环的每个值,运行 i 次常量 = ci
。-nc+(n-1)+...+2c+1c = c(n+..+2+1) = cn(n+1)/2 = O(n^2)
运行时间。
Q3。
int y=1;
int j=0;
for(j=1; j<=2n; j=j+2) //runs 2n times, increments by 2
y=y+i; //constant c
int s=0;
for(i=1; i<=j; i++) // not a nested for loop, therefore runs n times
s++;
运行时间:O(n)
Q4。
int x=0; //constant
for(int i=1; i<=n; i=i*3) //runs log_3 (n) times
{
if(i%2 != 0) // for values above will always be 1
for(int j=0; j<i; j++) // runs from 0 to log_3(n)
x++;
}
所以我们有clog_3(n)xclog_3(n) = O(log_3(n))^2