当 n 为 偶 数 时, 令 n=2m , 则 两 个数 列 的 中 位 数分 别 为 x[ m-1 ]和 y[ m-1 ], 则 :
x[0:m-2]
1) 基本算法思想
归并排序的原理是不断地将两个有序的序列合并为一个有序列,设有 n 个元素,那么第
一步是长度为 1 的序列进行合并,第二步是长度为 2 的序列进行合并,第 3 步是长度为
4 的序列进行合并,以此类推。
2) 复杂度分析
对于所给的 n 元素数组已排好序的极端情况,此算法不需要执行合并步骤,而算法
MergeSort 需要执行(log n)次合并,因此这种情况下,算法需要 O(n)时间,而算法
MergeSort 需要 O(nlogn)时间。
3) 注意的问题
注意物品广告类的构造函数的参数,时间没有加入到参数列表中,是自动将系统当前时
间作为起拍时间,并规定持续时间为一个月,即结束时间也固定。
六、实验结果总结
1. 中位数问题
1) 测试结果:
input.txt 中的内容:
控制台:
output.txt 中的内容:
2) 算法实现的复杂度在问题规模很大时可以接受。
3) 如果不用分治方法,可以先把两个排好序的数组合并成一个数组,然后再找中位数,这
样的算法时间复杂度为 O(n),不会比分治算法有更好的效率。
4) 选用简单的一维数组,利用下标便于操作,比较合适。
2. Gray 码问题
4
1) 测试结果:
input.txt 中的内容:
控制台:
output.txt 中的内容:
2) 算法实现的复杂度在问题规模很大时,不太满足要求,因为需要特别大的二维数组,数
量级为 2n ,造成很大的空间浪费。
3) 除了分治法解 Gray 码问题,没有想到其他的方法。
4) 所选数据结构不太合适,有可能造成极大的空间浪费。
3. 归并排序
1) 测试结果:
input.txt 中的内容:
5
控制台:
output.txt 中的内容:
6
2) 算法实现的复杂度在问题规模很大时可以接受。
3) 如果不用分治算法,可以用其他的排序算法,但是有可能效率比较低。
4) 选用的数据结构比较合适。
5) 因为时间问题,物品的起拍时间和关闭时间在构造时固定为当前系统时间,但是可以写
设置时间的函数,这次没有实现,但是要求的显示时间还是有的。
七、附录
宋传鸣 计算机工程与设计 Vol.25 No.7,2004.7
王晓东 计算机算法设计与分析【C】 北京:电子工业出版社 2001
7