数据结构:笔记-复杂度

1、算法的计算量的大小称为计算的( )。
正确答案: B 你的答案: B (正确)
效率
复杂性
现实性
难度

2、下列程序对x的赋值语句频度是()?

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

正确答案: C 你的答案: C (正确)
O(2的n次方)
O(n)
O(n的平方)
O(log2的n次方)

3、下面程序段的时间复杂度为( )

k=1;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

A[i][j]=k++;

正确答案: A 你的答案: A (正确)
O(n2)
O(n)
O(2n)
O(1)

3、算法的时间复杂度取决于()
正确答案: C 你的答案: C (正确)
问题的规模
待处理数据的初态
A和B

4、以下数据结构中,哪一个是线性结构()?
正确答案: D 你的答案: D (正确)
广义表
二叉树
稀疏矩阵

解析:A,广义表是非线性结构的,它也是线性表的一种推广
B,二叉树是树状结构
C,稀疏矩阵常用来存储图
D,串,如字符串,是线性结构

5、数据结构中数据元素之间的逻辑关系被称为()
正确答案: D 你的答案: D (正确)
数据的存储结构
数据的基本操作
程序的算法
数据的逻辑结构

6、 算法的时间复杂度与( )有关。
正确答案: D 你的答案: C (错误)
所使用的计算机
与计算机的操作系统
与数据结构
与算法本身
解析:算法时间复杂度与算法本身有关。

7、算法的时间复杂度与( )有关。
正确答案: D 你的答案: C (错误)
所使用的计算机
与计算机的操作系统
与数据结构
与算法本身

解析:算法的时间复杂度与算法班上有关。

8、在有序双向链表中定位删除一个元素的平均时间复杂度为
正确答案: B 你的答案: C (错误)
O(1)
O(N)
O(logN)
O(N*logN)

9、程序段
for(i=n-l;i>l;i–)
for(j=l;j<i;j++)
if(A[j]>A[j+1])
A[j]与A[j+1]对换;
其中n为正整数,则最后一行的语句频度在最坏情况下是()
正确答案: B 你的答案: C (错误)
O(n)
O(n²)
O(n×log₂n)
不直接依赖于n

10、确定如下关于求n!算法的时间复杂度是()

long fac(int n)
{
if (n>1)
return n*fac(n-1)
else
return 1;
}

正确答案: A 你的答案: B (错误)
O(n)
O(nlogn)
O(n^2)
O(n^3)

解析:需要递归n次,所以算法时间复杂度为O(n)。

11、T(n)=O(f(n))中,函数O()的正确含义为()
正确答案: C 你的答案: C (正确)
T(n)为f(n)的函数
T(n)为n的函数
存在足够大的正整数M,使得T(n)≤M×f(n)

12、希尔排序的时间复杂度是:O(nlogn)~O(n2),,希尔排序的时间复杂度在亚二次之间徘徊。

13、堆排序和归并排序的时间复杂度都为:nlog(n)。

14、某算法的时间复杂度为O(n2),表明该算法的
正确答案: C 你的答案: C (正确)
问题规模是n2
执行时间等于n2
执行时间与n2成正比
问题规模与n2成正比

15、题目来源于王道论坛
下列程序段的时间复杂度是 。
count=0;
for(k=1;k<=n;k*=2)
for(j=1;j<=n;j++)
count++;

正确答案: C 你的答案: D (错误)
O(log2n)
O(n)
O(nlog2n)
O(n2)

16、在用邻接表表示图时,拓扑排序算法时间复杂度为()
正确答案: D 你的答案: A (错误)
O(n)
O(nnn)
O(n*n)
O(n+e)

17、下面的算法段针对不同的自然数 n 作不同的处理,其中函数 odd (n) 当 n 是奇数时返回 true ,否则返回 false ,

while ( n > 1)

if ( odd (n) )

n = 3 * n + 1;

else

n = n / 2;

请问该算法所需计算时间的下界是( )。

正确答案: D 你的答案: B (错误)
Ω(2^n)
Ω(nlog n)
Ω(n!)
Ω(logn)

18、下列算法中均以比较作为基本运算,则平均情况与最坏情况下的时间复杂度相同的是( )。

正确答案: A 你的答案: C (错误)
在顺序存储的线性表中寻找最大项
在顺序存储的线性表中进行顺序查找
在顺序存储的有序表中进行对分查找
在链式存储的有序表中进行查找

19、一个长度为 n 的正整数数列,先递减再递增,如果要找到数列中最小的正整数,最优算法的平均时间复杂度是:()

正确答案: D 你的答案: B (错误)
O(n)
O(nlog(n))
O(log(n^2))
O(log(n))

20、写出a*(b-cd)+e-f/g(h+ij-k)的逆波兰表达式。
正确答案: D 你的答案: A (错误)
a(b-c
d)+e-(f/g(h+ij-k))
a(b-(cd
))+e-(fg/(h+ij-k))
a(bcd
-)+e-(fg/hij+k-)
abcd
-e+fg/hij+k-*-

解析:根据运算符优先级添加括号。
a*(b-cd)+e-f/g(h+ij-k)
= a * (b - (c * d)) + e - (f / g) * (h + (i * j) - k)
= a * (b - (cd
)) + e - (fg/) * (h + (ij*) - k)
= a * (bcd*-) + e - (fg/) * ((hij*+) - k)
= (abcd*-) + e - (fg/) * (hij+k-)
= (abcd*-e+) - (fg/hij+k-)
= (abcd
-e+fg/hij+k-*-)

21、对于有n个顶点的有向图,由费罗伊德(Floyd)算法求每一对顶之间的最短路径的时间复杂度是( )
正确答案: D 你的答案: B (错误)
O(1)
O(n)
O(n^2)
O(n^3)
解析:最短路径算法:一个是迪杰斯特拉算法,求从某个源点到其余各顶点的最短路径,求解过程按路径长度递增的次序产生的最短路径,时间复杂度是O(n^2) ; 另一种算法是弗洛伊德算法,求 每一对顶点之间的最短路径,时间复杂度为O(n^3)。
从形式上来说,这种算法比以图中的每个顶点为源点n次调用迪杰斯特拉算法更为简洁。

22、使用 KMP 算法在一长度为N 的字符串中寻找长度为 M 的子字符串的时间复杂度为()
正确答案: A 你的答案: A (正确)
O(N + M)
O(N * (M^2))
O(N * M)
O(N * log(M))

23、麦秋时节,庄园主雇了个力大无穷的农民来帮他收割田里的麦子。收获的劳动量很大,农民必须在七天之内收割完。庄园主答应每天给他一块金块作工钱。但是这七块相等的金子是连在一起的,然而工钱是必须每天结清的。农民不愿意庄园主欠帐,而庄园主也不肯预付一天工钱。请问最少掰金子几次可以完成上述任务?
正确答案: A 你的答案: C (错误)
2

解析:1、第一天,庄园主掰1块金给农民,付第一天的。农民:1;庄园主:6
2、第二天,庄园主从剩下的6块里面掰下2块给农民,并收回第一天的一块。农民:2;庄园主:1+4
3、第三天,庄园主将手里的一块散金给农民。农民:2+1;庄园主:4
4、第四天,庄园主收回农民手里的三块金,并把手里的金给农民。农民:4;庄园主:2+1
5、第五天,庄园主把手里的1块散金给农民。农民:4+1;庄园主:2
6、第六天,庄园主收回农民手里的1块散金,将2块金给农民。农民:4+2,庄园主:1
7、第七天,庄园主将手里的金块给农民。农民:7,庄园主:0

综上,一共掰了两次。选A

24、已知一段文本有1382个字符,使用了1382个字节存储,这段文本全部是由a、b、c、d、e字符组成,a 354次,b 483次,c 227次,d 96次,e 222次,对这5个字符使用哈夫曼编码。则以下说法正确的是?
正确答案: A C D 你的答案: C (错误)
使用哈夫曼编码后,使用编码值来存储这段文本将花费最少的存储空间、
使用哈夫曼编码后,a b c d e 这5个字符对应的编码值是唯一确定的
使用哈夫曼编码后,a b c d e 这5个字符对应的编码值可以有多套,但每个字符的编码位数是确定的
b这个字符的编码位数最短,d这个字符的哈夫曼编码位数应该最长

解析:哈弗曼树编码的思想就是:频率高的给予较短的编码,频率少的给予较长的编码。

25、有一个单向链表,头指针和尾指针分别为p,q,以下哪项操作的复杂度不受队列长度的影响?
正确答案: A C D 你的答案: B D (错误)
删除头部元素
删除尾部元素
头部元素之前插入一个元素
尾部元素之后插入一个元素

解析:ACD B删除尾部元素,需要找到尾部元素的前一个元素,与队列长度有关

26、以下说法,正确的有()
正确答案: A B C D 你的答案: B C (错误)
红黑树插入操作的平均时间复杂度为0(log n),最坏时间复杂度为0(log n)
归并排序的最差情况复杂度O(nlogn)
堆排序的最差情况复杂度O(nlogn)
不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒椒。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值