2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数

参考:https://www.tomorrow.wiki/archives/1157
2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数
文章图片
image.png 中位数的概念: 【2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数】对于数集 就是数集排序后中间位置的那个数,集合有偶数个数 中位数就是将 中间两个数的平均数
此题还需要注意的是 :两个序列的长度是一样的,若两个序列长度是不一样的(需要思考)

2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数
文章图片
image.png 解题的关键:
1、找出两个序列的中位数 比较 舍去比小的小的部分,比大的大的部分(舍去的长度是相同的)
2、如何判断 减去的长度是 :需要舍弃的两个数的更小的值
2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数
文章图片
image.png 2019-05-11等长度的升序序列A|2019-05-11等长度的升序序列A,B 找出两个序列A和B的中位数
文章图片
image.png

int m_search(int A[], int B[], int n ) { /*分别表示序列 A B 的首位数 末尾数 中位数*/ int s1=0, d1=n-1, m1; int s2=0, d2=n-1, m2; while(s1!=d1 || s2!=d2) { m1 = (s1+d1)/2; m2 = (s2+d2)/2; if(A[m1]==B[m2])/*满足条件 1*/ return A[m1]; if(A[m1]

    推荐阅读