找到排序好的两个序列的中间的数,等于重新排序,但只要找到一半长度位置的两个数,然后求均值。
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int C[m + n];
int i = 0, j = 0, index = 0;
int mid = (m + n + 1) / 2;
while(true) {
if (i < m && j < n) {
if (A[i] < B[j]) {
C[index] = A[i++];
}
else {
C[index] = B[j++];
}
}
else if (i < m) {
C[index] = A[i++];
}
else if (j < n) {
C[index] = B[j++];
}
if (++index > mid) {
break;
}
}
double result = C[mid - 1];
if ((m + n) % 2 == 0) {
result = ((double)C[mid] + C[mid-1]) / 2;
}
return result;
}
};