#6123. gesp二级真题分类八:算法复杂度初步
gesp二级真题分类八:算法复杂度初步
八、算法复杂度初步(共10题)
题目
1. 下面代码段的时间复杂度为( )。
int cnt=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if((i+j)%3==0) cnt++;
{{ select(1) }}
- O(n)
- O(n log n)
- O(n^2)
- O(2^n)
2. 给定算法,时间复杂度为( )。
bool f(int arr[], int n, int target) {
for(int i=0;i<(1<<n);i++){
int sum=0;
for(int j=0;j<n;j++)
if(i&(1<<j)) sum+=arr[j];
if(sum==target) return true;
}
return false;
}
{{ select(2) }}
- O(n^2)
- O(n·2^n)
- O(1)
- O(n^3)
3. 以下代码时间复杂度为( )。
int cnt=0;
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
cnt++;
{{ select(3) }}
- O(n)
- O(n^2)
- O(n log n)
- O(2^n)
4. 以下代码时间复杂度为( )。
int i=1;
while(i<n){
i*=2;
}
{{ select(4) }}
- O(log n)
- O(n)
- O(n log n)
- O(1)
5. 下面程序段的时间复杂度是( )。
for(int i=0;i<n;i++)
for(int j=0;j<i;j++)
for(int k=0;k<j;k++)
cnt++;
{{ select(5) }}
- O(n^3)
- O(n^2)
- O(n)
- O(2^n)
6. 下列算法中,时间复杂度最低的是( )。
{{ select(6) }}
- 冒泡排序
- 选择排序
- 二分查找
- 斐波那契递归
7. 对于规模为n的问题,时间复杂度O(2^n)的算法在n=30时通常无法在1秒内完成。(判断题)
{{ select(7) }}
- 正确
- 错误
8. 一个算法的时间复杂度为O(n^2),那么它一定比O(n log n)的算法慢。(判断题)
{{ select(8) }}
- 正确
- 错误
9. 以下哪个时间复杂度最好?( )
{{ select(9) }}
- O(n!)
- O(2^n)
- O(n^2)
- O(log n)
10. 下面代码的时间复杂度是( )。
for(int i=0;i<n;i++)
for(int j=0;j<100;j++)
cnt++;
{{ select(10) }}
- O(n)
- O(100n)
- O(n^2)
- O(1)