首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

多个有序数组求中位数解决思路

2012-02-09 
多个有序数组求中位数多个有序数组求中位数的问题以前在论坛里似乎见过,但现在找没找到。问题描述有N个有序

多个有序数组求中位数
多个有序数组求中位数的问题以前在论坛里似乎见过,但现在找没找到。

问题描述
有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开始找。


说的比较简略,希望能表达清楚我的意思。

热点排行