4、Median of Two Sorted Arrays

来源:互联网 发布:网络十大不文明行为 编辑:程序博客网 时间:2024/05/16 10:04

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)).

Hide Tags
 Divide and Conquer Array Binary Search
double findMedianSortedArrays(int A[], int m, int B[], int n) {        //此题难度指数比较高,写完之后竟然过了,自己逻辑思维还是混乱的,细节问题仍然是不清楚的,此题需要多练        if ((m + n) % 2)            return findKth((m + n) >> 1, A, m, B, n);        else            return (findKth((m + n - 1) >> 1, A, m, B, n) + findKth((m + n) >> 1, A, m, B, n)) / 2.0;    }    int findKth(int k, int A[], int m, int B[], int n)    {        int low1 = 0, high1 = m, low2 = 0, high2 = n, mid1, mid2;        while (low1 < high1 && low2 < high2)        {            mid1 = (high1 + low1) / 2;            mid2 = (high2 + low2) / 2;            //此处考虑需全面细致,关键就是这部分代码如何转换,最后我要达到的有一个数组经二分搜索搜索完了,            if (mid1 + mid2 >= k)            {                 if (A[mid1] < B[mid2])                    high2 = mid2;                 else                    high1 = mid1;            }            else            {                if (A[mid1] < B[mid2])                    low1 = mid1 + 1;                else                    low2 = mid2 + 1;            }        }        if (low1 == high1)            return B[k - low1];        else            return A[k - low2];    }


0 0
原创粉丝点击