查找排序练习
1.判断题
- 在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。(F)
- 在散列中,函数“插入”和“查找”具有同样的时间复杂度。(T)
**解析:**都是O(1) - 有n个数存放在一维数组A[1…n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同。(F)
**解析:**平均查找长度是固定的。 - 在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关。(T)
举个例子:设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找 并且索引表和块内均采用顺序查找 ,则其平均查找长度为 ( ) 。 (1+2+3+4+5)/5+(1+2+3+4+5+6)/6=6.5 - 若二叉搜索树中关键码互不相同,则其中最小元素和最大元素一定是叶子结点。(F)
解析:这个可以画个二叉树 - hash表的平均查找长度与处理冲突的方法无关(F)
- 仅基于比较的算法能得到的最好的“最坏时间复杂度”是O(NlogN)。(T)
传送门 - 对N个记录进行归并排序,归并趟数的数量级是O(NlogN)。(F)
**解析:**对于N个元素进行k-路归并排序时,排序的趟数m满足km=N,所以m=[log2n]。
传送门 - 对N个记录进行简单选择排序,比较次数和移动次数分别为O(N^2 )和O(N)。(T)
- 对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。(F)
- 希尔排序是稳定的算法。(F)
**解析:**插入排序、冒泡排序、桶排序、归并排序和基数排序算法是稳定的。
2.选择题
-
从一个具有N个结点的单链表中查找其值等于X的结点时,在查找成功的情况下,需平均比较多少个结点? ( D )
A .N/2 B.N C.(N−1)/2 D.(N+1)/2
**解析:**由于单链表只能进行单向顺序查找,以从第一个节点开始查找为例,查找第m个节点需要比较自的节点数f(m)=m,查找成功的最好情况是第一次就查找成功,只用比较1个节点,最坏情况则是最后才查找成功,需要比较n个节点。
所以一共有n种情况,平均下来需要比较的节点为(1+2+3+…+(n-1)+n)/n=(n+1)/2。 -
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:(B)
A.冒泡排序 B.快速排序 C.归并排序 D.插入排序 -
对于只在表的首、尾进行插入操作的线性表,宜采用的存储结构为 (C)
A) 顺序表 B) 用头指针表示的单循环链表
C) 用尾指针表示的单循环链表 D) 单链表