若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行( )次比较。
对一个由n个关键字不同的记录构成的序列,能否用比2n一3少的次数选出该序列中关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏的情况下至少要进行多少次比较?
试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点V
i
到顶点V
j
的路径(i≠j)。(注意:算法中涉及的图的基本操作必须在存储结构上实现。)
已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L;中序序列为:D,J,G,B,E,H,A,C,K,I,L,F。(1)写出该二又树的后序序列。(2)画出该二叉树。(3)求该二叉树的高度以及该二叉树中度为2、1、0的结点个数。
关于堆的一些问题: (1)堆的存储表示是顺序的,还是链接的? (2)设有一个最小堆,即堆中任意结点的关键字均大于它的左孩子和右孩子的关键字。其具有最大值的元素可能在什么地方? (3)对n个元素进行初始建堆的过程中,最多做多少次数据比较(不用大O表示法)?
在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为( )。
线性表(a
1
,a
2
,…,a
n
)以链式存储方式存储时,访问第i位置元素的时间复杂度为( )。
一组记录的关键码为(25,48,16,35,79,82,23,40,36,72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为( )。
键树(Trie),又称数字查找树,它是一棵度大于等于2的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。请用类C语言或类PAscAL语言编写一个在键树T上查找关键字等于给定值KEY的记录的算法。若查找成功,返回指向该记录的指针;否则返回空指针。
下面关于m阶B树的说法中,正确的是( )。 ①每个结点至少有两棵非空子树。 ②树中每个结点至多有m一1个关键字。 ③所有叶子在同一层上。 ④当插入一个数据项引起B树结点分裂后,树长高一层。
下面试图对图中路径进行定义,说法正确的是( )。
某个任务的数据模型可以抽象为给定的k个集合:S
1
,S
2
,…,S
k
。其中S
i
(1≤i≤k中的元素个数不定。在处理数据过程中将会涉及元素的查找和新元素的插入两种操作,查找和插入时用一个二元组(i,x)来规定一个元素,i是集合的序号,x是元素值。设计一种恰当的数据结构来存储这k个集合的元素,并能高效地实现所要求的查找和插入操作。
利用逐点插入建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,要查找元素30要进行元素间的比较次数是( )。
无向图中顶点个数为n,那么边数最多为( )。
无向图中项点个数为n,那么边数最多为( )。
已知关键字序列(K
1
,K
2
,K
3
,…,K
n-1
)是大根堆。试写出一算法将(K
1
,K
2
,K
3
,…,K
n-1
,K
n
)调整为大根堆,并利用调整算法写一个建大根堆的算法。
判别给定的二叉树是否是完全二叉树,并给出设计的算法(可不描述结构体)。
写出从哈希表中删除关键字为K的一个记录的算法。设哈希函数为H,解决冲突的方法为链地址法。
