题目大意
给定两个有序的数组,求中位数。
归并排序:
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution ss = new Solution();
int[] n1 = {10};
int[] n2 = {2,4,6};
System.out.println(ss.findMedianSortedArrays(n1, n2));
}
}
class Solution {
//归并排序
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length , n = nums2.length;
int mid = (m+n)>>1;
//合并后的数组
int[] num = new int[m+n];
int i = 0,j = 0,k = 0;
//分别从两个有序的数组中取相对小的数,放在另一个数组中
while(i < m || j < n){
if(i == m){
num[k++] = nums2[j++];
continue;
}
if(j == n){
num[k++] = nums1[i++];
continue;
}
if(nums1[i] < nums2[j])
num[k++] = nums1[i++];
else
num[k++] = nums2[j++];
}
if((m+n)%2 == 1)
return num[mid];
else
return (num[mid-1] + num[mid])/2.0;
}
}