对于求两个有序序列a[],b[]的中位数,首先考虑到二路归并后求其中位数c[m](m=(s+t)/2,s为序列左侧编号,t为序列右侧编号,对于偶数位中位数,只考虑下中位),但时间复杂度为O(n),效率比较低,因此这里考虑采用分治法。当两个有序序列元素个数只有一个时,返回较小的那一个;当元素个数不止一个时,分为以下三种情况:

(1)a[m1]与b[m1]相等,a[m1]或b[m1]就是中位数,因为合并后a[m1]和b[m1]必定在中间位置。

(2)a[m1]>b[m1],此时考虑
大的舍大的,小的舍小的。即元素大的序列舍弃后半子序列,保留前半子序列;元素小的序列舍弃前半子序列,保留厚板子序列(
要求舍弃的长度相等)。

(3)a[m1]>b[m1],同(2)。

在求解过程中,保留前半子序列prepart可以直接t=m;但保留后半子序列postpart时,需要考虑到奇偶位数问题,当元素个数为奇数(s+t)%2==0个时,直接t=m(这样舍弃的位数才相等),当元素个数为偶数(s+t)%2!=0个时,
t=m+1(因为偶数个元素时,考虑的是下中位,因此为使舍弃的位数相等,下中位就不能要)。