考试时间:2023.2.15 14:30-16:30
一、线性结构
1.给定一个序列,写出冒泡排序,归并排序,选择排序第二趟的结果
2.给了下面两段程序,分别分析时间复杂度
3.有一个数组为a[10][20],数组首地址是200,整数占4个字节,求a[4][5]的地址。当地址为400时,求对应的a[][]
4.比较数组和链表的优缺点
二、树状结构
1.给定一个二叉树先序序列和中序序列,要求写出后序序列
2.给定8个字母出现的频率,建立哈夫曼树,并求每个字母的哈夫曼编码,要求频率小的在右边。
3.给定一个序列,问该完全二叉树是否是个最大堆。如果不是,请初始化成最大堆。
4.写出二叉搜索树find(const&theKey)的伪代码
三、网状结构
1.第一问写出prim算法核心思想,第二问用prim算法求出题目中给出的无向图的最小生成树(写出求解过程)
2.第一问,写出题目中给定的有向图的所有拓扑序列。
第二问
(i)使用动态规划思想的floyd算法求出该有向图每个顶点对之间的最短路径长度
(ii)写出A点到每个点的最短路径
3.写出图的BFS伪代码
四、算法题
1.上台阶可以一次上一级,也可以一次上两级,用动态规划的思想求出上11级台阶有多少种走法。写出算法思想,c++实现,时间复杂度
2.中值快速排序,先从a[leftEnd],a[(leftEnd+rightEnd)/2],a[rightEnd]中挑一个大小适中的元素,以他为支点进行中值快速排序。以此类推,最终序列会变成有序。写出算法思想,c++实现,以及第一趟中值快速排序的结果。
给定序列:x x x x x x