寻找两个等size有序数组的中位数
2014-11-13 20:50
691 查看
#include <iostream> #include <stdio.h> #include <fstream> using namespace std; int getMid(int* a,int* b,int Ai,int Aj,int Bi,int Bj) { int Amid = (Ai+Aj)/2; int Bmid = (Bi+Bj)/2; if(Aj-Ai+1==1) { if(a[Ai]<b[Bi]) { return a[Ai]; } else { return b[Bi]; } } if(Aj-Ai+1==2) { if(b[Bi]>=a[Ai]) { return b[Bi]; } else { return a[Ai]; } } if(a[Amid] == b[Bmid]) { return b[Bmid]; } else { if(a[Amid]<b[Bmid]) { if((Aj-Ai+1)%4==0) { getMid(a,b,Amid,Aj,Bi,++Bmid); } else { getMid(a,b,Amid,Aj,Bi,Bmid); } } else { if((Aj-Ai+1)%4==0) { getMid(a,b,Ai,++Amid,Bmid,Bj); } else { getMid(a,b,Ai,Amid,Bmid,Bj); } } } }; int main() { int size; freopen("input.txt","r",stdin); cin>>size; int *a=new int[size]; int *b=new int[size]; for (int i = 0; i < size; ++i) { cin>>a[i]; } for (int i = 0; i < size; ++i) { cin>>b[i]; } ofstream fout; fout.open("output.txt"); fout<<getMid(a,b,0,size-1,0,size-1); fout.close(); cout << getMid(a,b,0,size-1,0,size-1)<< endl; return 0; }
相关文章推荐
- 寻找两个有序数组合并之后的中位数
- 关于在一个序列中寻找中位数和第K大的数(在两个等长有序数组中寻找中位数)
- Median of Two Sorted Arrays - 寻找两个有序数组的中位数(重)
- [转载]寻找两个有序数组中的第K个数或者中位数
- leetcode之数组类之数组的旋转与分治类-----OJ 189/33/81/153/154 数组旋转 旋转数组搜索 88 有序数组合并 4 两个有序数组寻找第K个元素/中位数 35 寻找插入位置
- 寻找两个有序数组中的第K个数或者中位数
- 寻找两个有序数组中的第K个数或者中位数
- ~~~~(>_<)~~~~Median of Two Sorted Arrays:两个有序数组寻找中位数
- (1.2.4.2)寻找两个有序数组中的第K个数或者中位数
- [leetcode] Median of Two Sorted Arrays 寻找两个有序数组的中位数
- [LeetCode题解]从两个有序数组的并集中寻找第k小元素
- 求两个有序数组的中位数和者第k小元素
- 【分步详解】两个有序数组中的中位数和Top K问题
- Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode
- [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数
- 给定两个有序数组求他们的中位数
- 两个有序数组合并,并求中位数(复杂度为O(m+n))
- 两个有序数组中,寻找第K大的数
- 给定两个有序的n长度的数组,如何找出这两个数组合并后的中位数?
- LeetCode—寻找两个有序数组中值