单项选择(1997年中国科学院计算机技术研究所)

在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是【 】。

A、直接插入排序

B、冒泡排序

C、简单选择排序

答案解析

A

【解析】

对直接插入排序而言,其时间复杂度为O(n2),但若待排记录序列为“正序”时,其时间复杂度可提高至O(n)。

若待排序记录序列按关键字“基本有序”,即序列中具有下列特性 L.r[i].key < Max{L.r[j].key}(1≤j<i)的记录较少时,直接插入排序的效率就可大大提高,从另一方面来看,由于直接插入排序算法简单,则在n值很小时效率也较高。

讨论

下述排序算法中,所需辅助存储量最多的是__________,所需辅助存储量最少的是__________,平均速度最快的是__________。A. 快速排序 B. 归并排序 C. 堆排序

在分析二叉查找树性能时常加入失败结点,即外结点,从而形成扩充的二叉树。若设失败结点i所在层次为li,那么查找失败到达失败结点时所做的数据比较次数是多少?

最佳二叉树是AVL树(平衡二叉树)。

二叉树中,具有两个子女的结点的中序后继结点最多只能有一个子女。

若散列表的负载因子α<1,则可避免碰撞的产生。

设a、b、c、d和e这5个字符的编码分别为1、2、3、4和5,并设标识符依以下次序出现ac、bd、aa、be、ab、ad、cd、bc、ae和cd。要求用哈希(Hash)方式将它们存放在具有10个位置的表中。① 对上述关键字(标识符)构造一个哈希函数,使得发生冲突尽可能地少。② 用线性探测再散列法解决冲突。写出上述各关键字在表中的位置。

设有12个数据{25,40,33,47,12,66,72,87,94,22,5,58},它们存储在散列表中,利用双散列解决冲突,要求插入新数据的平均查找次数不超过3次。① 该散列表的大小m应该设计多大?② 试为该散列表设计相应的散列函数(用除留余数法)并计算寻找下一个“空位”时向前跨步步长的再散列函数。③ 顺次将各个数据散列到表中。④ 计算查找成功的平均查找次数。

若杂凑表(Hash)的地址范围为[0,9],杂凑函数为H(key)=(key2+2) MOD 9,并采用链地址法处理冲突,请画出元素7、4、5、3、6、2、8、9依次插入杂凑表的状态。

假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行【 】次探测。

负载因子(装填因子)是散列表的一个重要参数,它反映散列表的装满程度。