(1)
复杂度 O(1)
int sum = 0, n = 100;
sum = (1+n)*n/2;
cout<<sum;
(2) 复杂度 O(n)
一个循环,执行n次
int i;
for( i = 0; i < n; i++){
cout<<i;
}
(3) 复杂度 O(log n)
while循环 count每次循环翻倍
循环的次数应该是log n吧,,,
int count = 1;
while (count<n){
count = count *2;
cout<<count;
}
(4) 时间复杂度 O(n^2)
嵌套循环 内外循环都n次
for(int i =0; i < n; i++){
for(int j = 0; j < n; j++){
cout<<"you are so nice~"<<endl;
}
}
(5) 时间复杂度 O(m*n)
外循环m次 内循环n次
for(int i =0; i < m; i++){
for(int j = 0; j < n; j++){
cout<<"hello world~"<<endl;
}
}
(6)复杂度O(n^2)
嵌套循环
外循环 n次
内循环(n-i)次
内循环共执行:n+(n-1)+…+1=((n+1)*n)/2次
for(int i =0; i < n; i++){ n次
for(int j = i; j < n; j++){ ((n+1)*n)/2次
cout<<"sunny day~"<<endl;
}
}
(请先计算循环内的语句的执行次数,再给出时间复杂度大O表示)
(7)
n++; //1执行1次
function( n ); //2 执行1次
int i, j;
for (i=0; i<n; i++){ //3 i执行**n+1**次, function(i)也执行了n+1次
function(i);
}
for (i=0; i<n; i++){
for(j=i; j<n; j++){ //4内循环,会执行(n-i)次,共执行了n+(n-1)+...+1= ((n+1)*n)/2次
cout<<"DS Cool!"<<endl;
}
}
整段代码时间复杂度:O(n^2)
请给出注释为1,2,3,4的三行代码的执行次数,并给出整段代码时间复杂度。