Median of Two Sorted Arrays

来源:互联网 发布:页面加载慢如何优化 编辑:程序博客网 时间:2024/05/29 10:33

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

//下面这个算法只做到了O(m+n),虽然还是被oj接受了,但还是要继续改进int[]   merge(int[] arrToBeMergedA, int[] arrToBeMergedB){    if(arrToBeMergedA == null || arrToBeMergedB == null){        return null;    }else if(arrToBeMergedA == null){        return arrToBeMergedB;    }else if(arrToBeMergedB == null){        return arrToBeMergedA;      }else {        int[]   mergedArr = new int[arrToBeMergedA.length + arrToBeMergedB.length];        int pointA = 0;        int pointB = 0;        for(int i  = 0; i < mergedArr.length; ){            if(pointA < arrToBeMergedA.length && pointB < arrToBeMergedB.length){                mergedArr[i++] = arrToBeMergedA[pointA]<=arrToBeMergedB[pointB]?arrToBeMergedA[pointA++]:arrToBeMergedB[pointB++];            }else if(pointA >= arrToBeMergedA.length){                mergedArr[i++] = arrToBeMergedB[pointB++];            }else{                mergedArr[i++] = arrToBeMergedA[pointA++];            }        }        return mergedArr;    }}    public double findMedianSortedArrays(int A[], int B[]) {     int[] myArr = merge(A,B);     int middle = myArr.length / 2;     double median = 0;     if(myArr.length % 2 == 0){        median = (myArr[middle] + myArr[middle-1]) / 2.0;     }else{        median = myArr[middle];     }     return median;    }
0 0
原创粉丝点击