笔试真题(笔记)—数据结构与算法

数据结构与算法

1、下列排序算法中,最好情况和最坏情况的时间复杂度相同的是?(AD
A.堆排序
B.快速排序
C.冒泡排序
D.归并排序
解析:最好情况和最坏情况的时间复杂度相同的有选择排序、归并排序、桶排序、计数排序、基数排序、堆排序

在这里插入图片描述

2、将递归算法转换为非递归算法, 通常需要使用(A
A.栈
B.队列
C.线性表
D.广义表
解析:递归可以看成一个栈,每次递归都是在push,最后一次得到答案开始pop

3、下列数据类型的转换,哪个可能会发生信息丢失?(AC)
A. int -> char
B. int -> long
C.long -> float
D.int -> double
解析:类型转换时只能从小的向大的转换,就相当于大桶装得下小桶的东西,小桶装不下大桶的一样,否则会丢失精度

4、给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近,若一个哈夫曼树有N个叶子节点,则其节点总数为( 2N-1
解析:对于给定的有各自权值的 n 个结点,构建哈夫曼树有一个行之有效的办法:
①在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的权值为左右孩子权值的和;
②在原有的 n 个权值中删除那两个最小的权值,同时将新的权值加入到 n–2 个权值的行列中,以此类推;
重复 1 和 2 ,直到所以的结点构建成了一棵二叉树为止,这棵树就是哈夫曼树。

5、后序遍历为二叉树遍历方式中的一种,假设将{ 3, 8, 9, 1, 2, 6 }依次插入初始为空的二叉排序树。则该树的后序遍历结果是多少( 2, 1, 6, 9, 8, 3 )?
解析:平衡⼆叉树也叫做平衡⼆叉搜索树,是⼆叉搜索树的升级版,⼆叉搜索树是指节点左边的所有节点都⽐该 节点⼩,节点右边的节点都⽐该节点⼤,⽽平衡⼆叉搜索树是在⼆叉搜索的基础上还规定了节点左右两边 的⼦树⾼度差的绝对值不能超过1

6、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(11)
解析:二叉树,度的和 = 总结点数 - 1

7、下面对于哈夫曼树描述正确的是(D)
A.是一颗满二叉树
B.是一颗完全二叉树
C.n 个叶子节点的哈夫曼树总共有 2n个节点
D.没有一个节点的出度为1
解析:哈夫曼树是一个二叉树;第二点,哈弗曼树的度只有两种情况,一是只有两个度的结点,二是没有度的结点,即叶子结点。
满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。
完全二叉树:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。

7、在什么情况下,新插入链表的节点既是首节点也是尾节点(A)
A.链表为空时
B.链表内含有一个节点
C.链表内含有两个节点
D.链表内含有三个节点

8、一个有向无环图是否存在拓扑排序?存在
解析:有向无环图存在拓扑排序。
拓扑排序:对有向图构造拓扑排序,解决工程是否能够顺利进行的问题。(拓扑排序是将有向无环图的顶点排成一个线性序列的过程。)
当全部顶点都被输出,说明图中无【环】存在,是AOV网;
没有输出全部顶点,说明图中存在【环】,不是AOV网;
AOV(Activity On Vertex Network)即一种有向无环图。
拓扑排序https://blog.csdn.net/u013288190/article/details/113835982

9、以下关于哈希表的描述哪个是正确的?(D
A.哈希表中的key的存放是有序的
B.哈希表只适合存储数字
C.哈希表适于做优先级队列
D.哈希表查询的时间复杂度是O(1)
解析:

  1. 哈希表不保存插入顺序,不可以按照下标读取元素
  2. hashmap.get(key),常数级的查询时间
  3. 哈希表不适于做优先级队列
  4. 优先级队列具有最高级先出的特点,因此需要元素按照优先级排序,但哈希表是无序的,因此哈希表不适于做优先级队列
  5. 哈希表存储的是键值对

10、存在一个数字组成的序列[a1,a2,…,aN],若要统计所有数字出现的次数,用以下哪种数据结构比较适合?(A
A.哈希表
B.数组
C.单链表
D.双链表
应该用哈希表,哈希表统计的时候可以根据哈希函数和冲突解决方案进行统计。
数组、双链表、单链表要做统计就只能做遍历。

11、存在若干个字符串,若要查找具有相同前缀的字符串,以下哪种数据结构比较适合(C
A.红黑树
B.哈希表
C.Trie树
D.栈
字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。
字典树:https://baike.baidu.com/item/%E5%AD%97%E5%85%B8%E6%A0%91/9825209?fromtitle=Trie%E6%A0%91&fromid=517527&fr=aladdin

12、以下哪个算法是用于求解两个正整数的最大公约数的算法?(B
A.Dijkstra算法
B.辗转相除法
C.Floyd算法
D.其他
又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

13、对于数组[2,3,4,5,6,1,7,6,8,9,10],使用下面哪种排序方式最优?(B)
A.冒泡排序
B.插入排序
C.快速排序
D.选择排序
解析:按照排序方法实际计算

14、关于以下加密算法,说法错误的是(C
A.MD5是不可逆运算,可通过碰撞来破解。
B.对称加密采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,常见的对称加密有DES。
C.非对称加密算法需要两个密钥:公钥和私钥。公钥与私钥是一对,公钥只能对数据进行加密,私钥只能解密。
D.ECC(椭圆曲线算法)是非对称加密,它相比RSA而言,使用较小的密钥长度并提供相当等级的安全性。
解析:
1、按照排序方法实际计算非对称加密算法:该算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
使用同一种密钥加密和解密属于对称加密算法。
常见的对称加密算法: DES, AES, 3DES等
常见的非对称加密: RSA,ECC等
2、哈希算法不可逆。哈希算法的确是不可逆的,因为一个哈希值对应无数个明文,理论上你并不知道哪个是。不一定要可逆才能攻击,譬如说将密码哈希后储存,我并不需要得到明文,只要找到一个东西可以算出同样的哈希值就能登陆。 尽管理论上不可逆,但实际操作中密码通常不可能足够长,所以一个哈希值所对应的明文中最短的那个很大概率是密码。
常见的哈希算法有MD5、SHA

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值