两个数组合并

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。

请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1 和 nums2 不会同时为空。

public class CombineString {

public static void main(String[] args) {
	
}
int[] sortAndconnectArr(int FirstArr[], int SecondArr[]){
    int[] ResultArr=new int[FirstArr.length+SecondArr.length];
    //若两个Arr中其中一个Arr的都比另一个大,则能直接合成
    if(FirstArr[FirstArr.length-1]<SecondArr[0]){
        ResultArr=connectArr(FirstArr,SecondArr);
        return ResultArr;
    }
    if(SecondArr[SecondArr.length-1]<FirstArr[0]){
        ResultArr=connectArr(SecondArr,FirstArr);
        return ResultArr;
    }
    //取FirstArr的第一个元素与SecondArr的第一个元素比较
    //小的一方,放入ResultArr,并使其索引+1,继续比较,直到最后
    int IndexOfFArr=0;
    int IndexOfSArr=0;
    int IndexOfRArr=0;
    while (IndexOfFArr<=FirstArr.length-1||IndexOfSArr<=SecondArr.length-1){
        if(FirstArr[IndexOfFArr]<SecondArr[IndexOfSArr]){
            ResultArr[IndexOfRArr]=FirstArr[IndexOfFArr];
            IndexOfFArr++;
        }else {
            ResultArr[IndexOfRArr]=SecondArr[IndexOfSArr];
            IndexOfSArr++;
        }

        //其中一方的数组已经全部遍历,将余下的数组部分写入ResultArr
        //全部遍历完毕则因为IndexOfXX++的原因应该是正好等于Arr.Length
        if(IndexOfFArr>FirstArr.length-1){
            ResultArr=addArr(ResultArr,IndexOfRArr+1,SecondArr,IndexOfSArr);
            return ResultArr;
        }
        if(IndexOfSArr>SecondArr.length-1){
            ResultArr=addArr(ResultArr,IndexOfRArr+1,FirstArr,IndexOfFArr);
            return ResultArr;
        }
        IndexOfRArr++;
    }
    return ResultArr;
}
public  int[] connectArr(int FirstArr[], int SecondArr[]){
    int[] ResultArr=new int[FirstArr.length+SecondArr.length];
    System.arraycopy(FirstArr, 0, ResultArr, 0, FirstArr.length);
    System.arraycopy(SecondArr, 0, ResultArr, FirstArr.length, SecondArr.length);
    return ResultArr;
}

public  int[] addArr(int ResultArr[],int RArrIndex,int AddArr[],int AArrIndex){
    while(AArrIndex<=AddArr.length-1){
        ResultArr[RArrIndex]=AddArr[AArrIndex];
        AArrIndex++;
        RArrIndex++;
    }
    return ResultArr;
}

}

猜你喜欢

转载自blog.csdn.net/weixin_37565521/article/details/87472316