Median of Two Sorted Arrays

There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

题意

长度为m和n排好序的数组A和B,找出A和B的中值

思路

将A和B放到数组C中排好序,找出C中的中间值。如果C的长度为奇数,返回C[C.length / 2] / 2;如果C长度为偶数,返回中间两个数的平均值,返回(C[size / 2] + C[(size - 1)/ 2]) / 2

 1 public class Solution {
 2     public double findMedianSortedArrays(int A[], int B[]) {
 3         double C[] = new double[A.length + B.length];
 4         int ptr_a = 0;
 5         int ptr_b = 0;
 6         int ptr_c = 0;
 7         for(; ptr_a < A.length && ptr_b < B.length && ptr_c < C.length; ptr_c++){
 8             if(A[ptr_a] > B[ptr_b]){
 9                 C[ptr_c] = B[ptr_b];
10                 ptr_b++;
11             }
12             else{
13                 C[ptr_c] = A[ptr_a];
14                 ptr_a++;
15             }
16         }//for
17         while(ptr_a < A.length)
18         {
19             C[ptr_c++] = A[ptr_a++];
20         }
21         while(ptr_b < B.length)
22         {
23             C[ptr_c++] = B[ptr_b++];
24         }
25 
26         
27 
28         int size = C.length;
29         if(size % 2 == 1)
30             return C[size / 2];
31         return (C[size / 2] + C[(size - 1)/ 2]) / 2;    
32     }
33 }

 

posted on 2015-03-09 14:32  luckygxf  阅读(185)  评论(0编辑  收藏  举报

导航