判断题
1.希尔排序是稳定的算法。
F
解析: 希尔排序是非稳定排序算法。
不稳定的排序算法:堆排序、快速排序、希尔排序、直接选择排序
稳定的排序算法:基数排序、冒泡排序、直接插入排序、折半排序、归并排序
2.在散列表中,所谓同义词就是具有相同散列地址的两个元素。
T
解析: 具有相同函数值的关键字对该散列函数来说称作同义词
3.对AVL树中的任一结点,其左、右子树的高度一定是一样的。
F
解析: AVL树也称作平衡二叉树,本质上是一棵二叉查找树,它的左右两个子树的高度差的绝对值不超过1。所以左右子树的高度不一定是一样的。
4.任何最小堆中从根结点到任一叶结点路径上的所有结点是有序的(从小到大)。
T
解析: 这里的路径指的是从根结点到一个叶节点一层一层向下移的时候所经过的结点。最小堆的一个结点一定比其子节点小,所以从根结点到任意叶节点路径上的所有结点是有序的。
5.将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树的先序遍历结果是:4、2、1、3、5、6。
T
解析: 画图可知
6.将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)。
F
解析:
二分查找的平均复杂度是O(logN)没错,但是本题是按照顺序存放在单链表中,二分查找是不可以用链表存储的。
这是由链表的特性决定的。链表是很典型的顺序存储结构,数据在链表中的位置只能通过从头到尾的顺序检索得到,即使是有序的,要操作其中的某个数据也必须从头开始。
这和数组有本质的不同。数组中的元素是通过下标来确定的,只要你知道了下标,就可以直接存储整个元素。
所以折半查找只能在数组上进行。
7.任何二叉搜索树中同一层的结点从左到右是有序的(从小到大)。
T
解析: 二叉搜索树,小于根结点左子树,大于根结点放在右子树,所以左右大小是排序好的。
8.在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。
F
解析: 39后面是101,所以后面的所有元素应该要比39大,25明显不对。
9.对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。
F
解析: 基本有序排列次数最少
10.要从50个键值中找出最大的3个值,选择排序比堆排序快。
T
解析: 选择排序只需要剩下的里面旋三次,而堆排列需要排列全部元素
选择题
1.用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:
A.7
B.10
C.50
D.99
解析
2^7=64>100/2=50
2.在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:
A.顺序查找
B.二分法
C.利用哈希(散列)表
D.利用二叉搜索树
解析
散列复杂度为1
3.将10个元素散列到100000个单元的哈希表中,是否一定产生冲突?
A.一定会
B.可能会
C.一定不会
D.有万分之一的可能会
解析
有可能会存到一起
4.对一个长度为 10 的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是()。
A.4
B.3
C.5
D.6
解析
2^3=8>10/2=5
5.(NeuDS_C++)在二叉排序树上查找关键码为28的结点(假设存在),则依次比较的关键码有可能是( )。
A.30, 36, 28
B.38, 48, 28
C.48, 18, 38, 28
D.60, 30, 50, 40, 38, 36
6.下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2)
A.冒泡排序
B.插入排序
C.堆排序
D.快速排序
解析
插入排序可能插在第一个,所有元素后移一位
7.对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下:
第一趟排序结果:2,12,16,5,10,88
第二趟排序结果:2,12,5,10,16,88
第三趟排序结果:2,5,10,12,16,88
则采用的排序方法可能是:
A.冒泡排序
B.希尔排序
C.归并排序
D.基数排序
解析
每次排出一个最大值,所以是冒泡排序
8.下面四种排序算法中,稳定的算法是:
A.堆排序
B.希尔排序
C.归并排序
D.快速排序
解析
稳定的算法:
基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序
不稳定的算法:
堆排序、快速排序、希尔排序、直接选择排序
9.对于序列{ 49,38,65,97,76,13,27,50 },按由小到大进行排序,下面哪一个是初始步长为4的希尔排序法第一趟的结果?
A.13,27,38,49,50,65,76,97
B.49,13,27,50,76,38,65,97
C.49,76,65,13,27,50,97,38
D.97,76,65,50,49,38,27,13
解析
步长为4应该是49、76、50排序
10.有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为()。
A.-1,4,8,9,20,7,15,7
B.-1,7,15,7,4,8,20,9
C.-1,4,7,8,20,15,7,9
D.A,B,C均不对。
解析
堆:
①完全二叉树
②parent>child
画图即得