试编写一个函数,以不多于3n/2的平均比较次数,在一个有n个整数的顺序表A中找出具有最大值和最小值的整数。
第1题
第2题
(1)用cerr<<及exit(1)语句来终止执行并报告错误;
(2)用返回布尔值false,true来实现算法,以区别是正常返回还是错误返[回;
(3)在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。
试讨论这3种方法各自的优缺点,并以你认为是最好的方式实现它。
第3题
第4题
设图G是一个有向图,设顶点值为字符型,边上权值为浮点型,其十字链表的存储表示定义如下:
(1)实现图的构造函数Graphmu1.输人-系列顶点和边,建立带权有向图的十字链表。
(2)编写一个算法,基丁图G的十字链表表示求该图的强连通分量,试分析算法的时间复杂度。
(3)以图846为例,画出它的十字链表,第一次深度优先搜索得到的finished数组及最后得到的强连通分量。
第5题
第6题
二叉搜索树中,然后对树进行中序遍历,并将元素按序放人数组a中,为简单起见,假设a中的数据互不相同。试编写一个函数,从一棵二叉搜索树中删除最大元素。要求函数的时间复杂性必须是O(h),其中h是二叉搜索树的高度。
第7题
第9题
可将算法的时间复杂度降低到O(nlog2n),算法的思想是对于关键码序列(keylow,keylow+1,…,keyhigh),轮流以keyk为根,k=low,low+1,…,h,求使得|W[low-1][k-1]-W[k][high]|达到最小的k,用keyk作为由该序列构成的拟最优二叉搜索树的根。然后对以keyu为界的左子序列和右子序列,分别施行同样的操作,建立根keyk的左子树和右子树,试编写一个函数,实现上述试探算法。要求该函数的时间复杂度应为O(nlog2n)。
第10题