2013년 2월 6일 수요일

Median of Two Sorted Arrays

 public double findMedianSortedArrays(int A[], int B[]) {
  int aLen = A.length;
  int bLen = B.length;
  int tLen = aLen + bLen;
  int[] arr = new int[tLen];
  int idx = 0, aIdx = 0, bIdx = 0;

  for (; aIdx < aLen && bIdx < bLen;) {
   if (A[aIdx] <= B[bIdx]) {
    arr[idx++] = A[aIdx++];
   } else {
    arr[idx++] = B[bIdx++];
   }
  }

  if (aIdx < aLen) {
   for (; aIdx < aLen;)
    arr[idx++] = A[aIdx++];
  }

  if (bIdx < bLen) {
   for (; bIdx < bLen;)
    arr[idx++] = B[bIdx++];
  }

  if ((tLen & 1) == 1) {
   return arr[tLen / 2];
  } else {
   return ((double) (arr[tLen / 2 - 1] + arr[tLen / 2])) / 2;
  }
 }

댓글 없음:

댓글 쓰기