class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int len1 = nums1.size();
int len2 = nums2.size();
float res1=0.0,res2=0.0,res;
int j,flag = 0;
for(int i =0;i < len1;i++){
for(int j = i;j < len1;j++){
if(nums1[i] > nums1[j]){
int k = nums1[j];
nums1[j] = nums1[i];
nums1[i] = k;
}
}
}
for(int i =0;i < len2;i++){
for(int j = i;j < len2;j++){
if(nums2[i] > nums2[j]){
int k = nums2[j];
nums2[j] = nums2[i];
nums2[i] = k;
}
}
}
if((len1+len2)%2==0 && len1 != 0 && len2 != 0){
int i=0,m=0,n=0;
for(;i <= (len1 + len2)/2 - 1;i++){
if (nums1[m] <= nums2[n]){
res1 = nums1[m];
m++;
if(m>len1-1)
{m--;
j = i;
flag = 1;
break;
}
}
else{
res1 = nums2[n];
n++;
if(n>len2-1)
{n--;
j=i;
flag = 2;
break;
}
}
}
//一个到界了
if(flag == 1&&((len1+len2)/2-j)>1)
res = nums2[(len1 + len2)/2 - len1 -1] + nums2[(len1 + len2)/2 - len1];
else if(flag == 2&&((len1+len2)/2-j)>1)
res = nums1[(len1 + len2)/2 - len2 -1] + nums1[(len1 + len2)/2 - len2];
else if(flag != 0&&nums1[m]<= nums2[n]&&((len1+len2)/2-j)== 1)
res = nums2[n] + res1;
else if(flag != 0&&nums1[m] > nums2[n]&&((len1+len2)/2-j) == 1)
res = nums1[m] + res1;
//未到界
else if(nums1[m]<= nums2[n])
res = nums1[m] + res1;
else
res = nums2[n] + res1;
//res
res = res/2.0;
}
else if((len1+len2)%2!=0 && len1 != 0 && len2 != 0){
int m=0,n=0,flag=0;
for(int i = 0;i <= (len1 + len2)/2 ;i++){
if (nums1[m] <= nums2[n]){
res1 = nums1[m];
m++;
if(m>len1-1&&i < (len1+len2)/2)
{m--;
flag = 1;
}
}
else if (nums1[m] > nums2[n]){
res1 = nums2[n];
n++;
if(n>len2-1&&i < (len1+len2)/2)
{n--;
flag = 2;
}
}
}
if(flag == 1)
res = nums2[(len1 + len2)/2 - m];
else if(flag == 2)
res = nums1[(len1 + len2)/2 - n];
else
res = res1;
}
else if(len1 == 0){
if(len2%2 ==0 )
res = (nums2[len2/2-1]+nums2[len2/2])/2.0;
else
res = nums2[len2/2 ];
}
else if(len2 == 0){
if(len1%2 ==0 )
res = (nums1[len1/2-1]+nums1[len1/2])/2.0;
else
res = nums1[len1/2 ];
}
return res;
}
};
以上为暴力求解,写完后感觉是不是傻!!!