摘要:
一、假设序列由n个关键字不同的记录构成,要求不经排序而从中选出关键字从大到小顺序的前k(k<<n)个记录,试问如何进行才能使所作的关键字间比较次数达到最小? 答: 用堆排序。在建立一个含n个元素的堆时,进行关键字的比较的次数不超过4n,调整新建堆时的比较次数不超过2log2n次。 该算法实现的伪代码 阅读全文
摘要:
一、假设二叉排序树以后继线索链表作存储结构,编写出该二叉排序树中所有大于a且小于b的关键字的算法。 答: 本实现要求输出二叉排序树中的所有大于a且小于b。由二叉排序树的相关知识我们很容易知道:用递归的方式进行遍历,遇到大于a且小于b的关键字时即输出。 该算法实现的伪代码如下: /* 函数名称:输出二 阅读全文
摘要:
一、试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构,且树中结点的关键字均不同。 答: 由分析可以知道,通过教材所学的知识我们很容易知道二叉排序树的特点。按照中序遍历的顺序,应当符合当前遍历到的节点值大于前一个遍历到的节点值,所以我们最终得到的中序遍历序列是一个有序序列, 阅读全文
摘要:
一、试编写一个算法,给有向无环图G中每个顶点赋以一个整数序号,并满足以下条件:若从顶点i至顶点j有一条弧,则应使i<j。 答: 分析题目,我们很容易知道本题应当采用拓扑排序的方法。我们先统计所有点的入度,然后把当前剩下的点中入度为0的点编号,把这个点删去,更新与它相邻的点的入度,直到重复所有点处理完 阅读全文
摘要:
一、同7.22题要求。试基于图的广度优先搜索策略写一算法。 答: 本题需要以邻接表的方式来实现BFS算法从而判断是否存在从一点到另一点的路径。由所学知识可以知道,实现BFS可以队列的方式。在这道题,使用队列的方式进行实现。 该算法实现的伪代码如下: /* 函数名称:给定图中,判断给定两点之间是否存在 阅读全文
摘要:
一、试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到vj的路径(i≠j)。注意算法中涉及的图的基本操作必须在此存储结构上实现。 答: 本题需要以邻接表的方式来实现DFS算法从而判断是否存在从一点到另一点的路径。由所学知识可以知道,实现DFS方式的方式有两种,用栈 阅读全文
摘要:
一、编写算法判别给定二叉树是否为完全二叉树。 答: 判断一个树是不是完全二叉树,可以使用BFS算法进行实现。在层序遍历的时候,空结点一定位于最后面。如果中间存在空结点则表明不是完全二叉树。继续执行直至遍历完成。 该算法实现的伪代码如下: /* 函数名称:判断树是不是完全二叉树 函数传入:树的根节点指 阅读全文