算法的时间复杂度和空间复杂度(防止题目重复)

1-1
算法分析的两个主要方面是时间复杂度和空间复杂度的分析。(T)

1-2
N​2​​logN和NlogN​2​​具有相同的增长速度(F)
[解析]一个N^2logN 一个2NlogN,肯定第一个快

1-3
2​N​​和N​N​​具有相同的增长速度。(F)
[解析]求导

1-6
在任何情况下,时间复杂度为O(n​^2​​) 的算法
比时间复杂度为O(n*logn)的算法所花费的时间都长。(F)
[解析]数据规模小的时候n^2要快

1-7
对于某些算法,随着问题规模的扩大,所花的时间不一定单调增加。(T)
[解析]O(1)所花时间始终不变,其余的算法都随规模递增

2-1

下面代码段的时间复杂度是()。(D)
x=n; //n>1
y=0;
while( x≥(y+1)*(y+1) )
y++;
A.O(1)
B.O(n​1/2​​)
C.O(n)
D.O(log​2​​n)
[解析]代码等同于 for (int y = 1; y * y <= n; y++) ;
时间复杂度 O(log2N)

2-2
下列代码

if ( A > B ) {
for ( i=0; i<NN/100; i++ )
for ( j=N
N; j>i; j-- )
A += B;
}
else {
for ( i=0; i<N2; i++ )
for ( j=N
3; j>i; j-- )
A += B;
}

的时间复杂度是:(D)
A.O(N​^3​)
B.O(N​^4​​)
C.O(N​^5​​)
D.O(N​^6​​)
[解析]不会分析

2-3

下列函数

int func ( int n )
{ int i = 0, sum = 0;
while ( sum < n ) sum += ++i;
return i;
}

的时间复杂度是:(B)
A.O(logn)
B.O(n​^(1/2​​))
C.O(n)
D.O(nlogn)
[解析]sum = 1 + 2 + … + n = (n)(n + 1)/2
i 约等于 n^(1/2)

2-4

下列代码

for(i=0; i<n; i++)
for(j=i; j>0; j/=2)
printf(“%d\n”, j);

的时间复杂度是:(D)
A.O(N×i)
B.O(N)
C.O(N^​2​​)
D.O(NlogN)
[解析]第一层循环的复杂度是N,第二层是logN

2-5
下面代码段的时间复杂度是()。(B)

x=0;
for( i=1; i<n; i++ )
for ( j=1; j<=n-i; j++ )
x++;

A.O(n)
B.O(n^​2​​)
C.O(n​^3​​)
D.O(2​^n​​)
[解析]外层循环是N,内层是N-i

2-6
要判断一个整数N(>10)是否素数,我们需要检查3到√​N​​​之间
是否存在奇数可以整除N。则这个算法的时间复杂度是:(B)
A.O(N/2)
B.O(√​N​​​)
C.O(√​N​​​logN)
D.O(0.5logN)

2-7
下列函数中,哪个函数具有最慢的增长速度:(B)
A.N^​1.5​​
B.NlogN^​2​​
C.N​^2*​​logN
D.N(logN)^​2​​
[解析]不知道…

2-8
给定N×N×N的三维数组A,则在不改变数组的前提下,
查找最小元素的时间复杂度是:(D)
A.O(N​^2​​)
B.O(NlogN)
C.O(N​^3​​*logN)
D.O(N^​3​​)
[解析]至少要遍历一遍数组,所以是O(N^3)

2-9
计算机算法指的是()。©
A.计算方法
B.排序方法
C.解决问题的有限运算序列
D.调度方法

2-10
计算机算法必须具备输入、输出和()等五个特性。(B)
A.可行性、可移植性和可扩充性
B.可行性、确定性和有穷性
C.确定性、有穷性和稳定性
D.易读性、稳定性和安全性
[解析]必须能结束并得到输出–有穷性
可行性–能写出来
确定性–不知道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值