1.题目:
如题;
2.代码:
/*
结论:分别求两个升序序列A,B的中位数,设为a和b,求序列A,B的中位数过程如下:
1)若a=b,则a或b即为所求;
2)若a<b,则舍弃A中较小的一半,B中较大的一半,要求两次舍弃长度相等;
3)若a>b,则舍弃A中较大的一半,B中较小的一半,要求两次舍弃长度相等;
重复1),2),3),直到两个序列中都只剩一个元素,较小的即为所求。
----------------------------------------------------------------------
原理:设A[n],B[n]=>AB[2n],AB[2n]中位数:比它大有n个,比它小有n-1;
1.n位项数,若n为奇数:(1,2,3,4,5)
a
A(1,......,(1+n)/2,.........n)
B(1,......,(1+n)/2,.........n)
b
1)若a<b=>A,B等长时易知合并之后也在中间;
2)若a<b=>(a之后+b+b之后)数定大与a,即有(n-(1+n)/2)*2+1=n项定大于a,压线,
但对于a之前的数则必有大与n个数大与它,不符合中位数要求=>在[a,n);
=>(a之前+a+b之前)数定小于b,也有(n-(1+n)/2)*2+1=n项定小于b&#x