代码改变世界

大二上学期算法第二章上机实践

2018-10-14 23:57  LucasLeeG  阅读(200)  评论(0编辑  收藏  举报
实践题目:两个有序序列的中位数
问题描述:已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即⌊(N+1)/2⌋个数(A0为第1个数)。
算法描述:用变量i和f作为两个数组的下标,依次比较并将两个数组所有元素归并成一个数组,最后直接输出合成数组第⌊(N+1)/2⌋个数。因为两个数组都是非降序序列,时间复杂度只有O(n)。
                  另外,该题目忽略元素的重复,用二分法直接不断两个数组的中位数,最后得到两个中位数,较小的那个即为所求答案,二分法时间复杂度为O(log2n)。
心得体会:通过拓展形式的题目,有了对二分法的更加深入理解。在解题过程中,发现2个以上解决方法能给自己带来益处以及成就感。