笔试题记录

1.寻找两个有序数组的中位数。

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int new1[nums1Size+nums2Size];
    int index=0;
    int i=0;
    int j=0;
    while(i     {
        if(nums1[i]             new1[index++]=nums1[i++];
        }else{
            new1[index++]=nums2[j++];
        }
    }
    while (i < nums1Size) new1[index++] = nums1[i++];
    while (j < nums2Size) new1[index++] = nums2[j++];
    if((nums1Size+nums2Size)%2==0){
        return (new1[(nums1Size+nums2Size)/2-1]+new1[(nums1Size+nums2Size)/2])/2;
    }else{
        return new1[(nums1Size+nums2Size)/2];
    }
}

你可能感兴趣的:(排序)