多个有序数组求中位数
多个有序数组求中位数的问题以前在论坛里似乎见过,但现在找没找到。
问题描述
有N个有序的数组,a1, a2, a3,求a1, a2, a3所有数据的中位数,N个数组的长度不一定相等。
我还想再扩展一下,找第[M,N]个数如果去求呢?
二个有序数组求中位数的问题我已经明白了,就不会再回答了。
[解决办法]
对于有序数组a1,a2,a3 ,an 求中位数
中位数满足一半比它大,一半比它小。
用i1,i2,i3,in标记 a1,a2,an数组中的位置。
循环变量i初始为0
1:取i1=i ,i2=0,in=0 开始遍历a1数组
2:取出a[0] ,然后定位a[0] 在a2,a3,an中的位置并标记下来 为i2,i3,in
3: 计算一下在所有数组中 共有多少个比 a[0]大并记下为NumB,有多少个比a[0]小并记下为NumL
如果NumB与NumL差值小于等于1 就可以断定当前值a[i]是中值。
如果i=a1.length还没找到,就从a2开始找。
说的比较简略,希望能表达清楚我的意思。