算法第4章实践报告
实践报告任选一题进行分析。内容包括:
1. 实践题目
2. 问题描述
3. 算法描述
4. 算法时间及空间复杂度分析(要有分析过程)
5. 心得体会(对本次实践收获及疑惑进行总结)
1. 实践题目
7-1 最优合并问题
2. 问题描述
用2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较,确定最优合并顺序,使总比较次数最少,确定最差合并顺序,使总比较次数最多
输入格式:
第一行有 1 个正整数k,表示有 k个待合并序列。 第二行有 k个正整数,表示 k个待合并序列的长度。
输出格式:
输出最多比较次数和最少比较次数。
3. 算法描述
(1)用sort函数对序列排序(非降序)
(2)计算最多比较次数(max):
首先 int k=b[m-1]+b[m-2];
之后用循环计算 k=k+b[i]; // k-1为每轮的比较次数
最后计算 max+=k-1;
(3)计算最少比较次数(min):
在已排好序的数组基础上,将数组前两个数求和 k,置于原有数组的后面,并计算min+=k-1,
然后忽略已求和的数将数组进行sort 排序,就这样重复下去,直至要排序的数组长度为1(即i=n-1)
(4)若先计算 min,则需注意原有数组及其长度发生变化;
(5)若发生段错误,就注意申请数组长度是否过小;
4. 算法时间及空间复杂度分析
算法中用到几个并列的for循环,则时间复杂度为 O(n);整个过程都是在原数组上进行操作的,所以空间复杂度为 O(1)
5. 心得体会
这次上机做题速度比之前快,主要是1、3题意容易理解,目前感觉题型比动态规划的要容易点

浙公网安备 33010602011771号