文章目录
- 1. 设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度(D)
- 2.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次压入栈S,一个元素出栈后即进入队列Q,若出队列的顺序为e2,e4,e3,e6,e5,e1则栈S的容量要求最小值为(B)
- 3.在具有 2n 个结点的完全二叉树中,叶子结点个数为(A)
- 4.下列叙述中错误的是(B )
- 5.下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序(D)
- 6.为提高散列(Hash)表的查找效率,可以采取的正确措施是( D)
- 7.将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是(C)
- 8.下列各排序法中,最坏情况下的时间复杂度最低的是(C )
1. 设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度(D)
A O(log2n)
B O(1)
C O(n2)
D O(n)
思路:时间复杂度考虑最坏情况:原单链表为2->3->4->5,现在要求插入1,如果采用尾插法,插入后的结果就是2->3->4->5->1,就需要把1向前移动N次
2.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次压入栈S,一个元素出栈后即进入队列Q,若出队列的顺序为e2,e4,e3,e6,e5,e1则栈S的容量要求最小值为(B)
A 2
B 3
C 4
D 5
思路:栈:先进后出;队列:先进先出
3.在具有 2n 个结点的完全二叉树中,叶子结点个数为(A)
A n
B n+1
C n-1
D n/2
思路:当完全二叉树的结点的个数为偶数的时候,度为1的节点的的个数为1;二叉树的结点个数 = 叶子结点的个数 + 度为1的结点的个数 + 度为2的结点的个数; 叶子结点的个数 = 度为2的结点的个数 + 1;本题中,n1 = 1;2n = n0 + n1 + n2;n0 = n2 + 1;联合三个式子可知n0 = n
4.下列叙述中错误的是(B )
A 二叉链表是二叉树的存储结构
B 循环链表是循环队列的存储结构
C 栈是线性结构
D 循环队列是队列的存储结构
思路:二叉链表可以看做是Node left和Node right;循环队列使用的是数组;
5.下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序(D)
A 二叉排序树
B 哈夫曼树
C AVL树
D 堆
思路:AVL数是平衡二叉搜索树,左右子树的高度差小于等于 1并且每一棵子树也是一棵平衡二叉搜索树,要保证左树小于根结点,右树大于根结点;哈夫曼树是带权值的数(与元素大小顺序无关);对于堆,以大根堆为例,堆满足根结点大于左右孩子;所以以大根堆的任意一个节点走到根结点都是一个递增的序列
6.为提高散列(Hash)表的查找效率,可以采取的正确措施是( D)
Ⅰ.增大装填(载)因子
Ⅱ.设计冲突(碰撞)少的散列函数
Ⅲ.处理冲突(碰撞)时避免产生聚集(堆积)现象
A 仅Ⅰ
B 仅Ⅱ
C 仅Ⅰ、 Ⅱ
D 仅Ⅱ、 Ⅲ
思路:Ⅰ会增加元素冲突,使得查找变慢
7.将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是(C)
A 2-6-3-5-4-1-7
B 6-2-3-5-4-1-7
C 6-5-3-2-4-1-7
D 1-4-7-5-6-3-2
思路:按照堆排序的方式原地进行升序排列是将堆顶元素和最后一个元素进行交换,再将剩下的元素向下调整为一个大堆,下图为第一轮调整后的结果
8.下列各排序法中,最坏情况下的时间复杂度最低的是(C )
A 希尔排序
B 快速排序
C 堆排序
D 冒泡排序
思路:希尔排序是直接插入排序的优化,它的时间复杂度和函数有关,大概是在O(N ^ 1.3)—O(N ^ 1.5);快速排序的时间复杂度,最坏情况是O(N^2),最好情况是O(NlogN);堆排序的时间复杂度为O(NlogN);冒泡排序的时间复杂度,最坏情况是O(N ^2);最好情况是O(N)