版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Victordas/article/details/84065498
别打我。。时间复杂度有点高 但是通过了哈哈哈哈
import java.util.ArrayList;
import java.util.Arrays;
//给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。
//
//请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
//
//你可以假设 nums1 和 nums2 不同时为空。
//
//示例 1:
//
//nums1 = [1, 3]
//nums2 = [2]
//
//中位数是 2.0
//示例 2:
//
//nums1 = [1, 2]
//nums2 = [3, 4]
//
//中位数是 (2 + 3)/2 = 2.5
public class LeetCode4 {
public static void main(String[] args) {
LeetCode4 L4 = new LeetCode4();
int[] nums1 = {1,3};
int[] nums2 = {2,4};
System.out.println(L4.findMedianSortedArrays(nums1, nums2));
}
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int[] nums_all = new int[nums1.length + nums2.length];
System.arraycopy(nums1, 0, nums_all, 0, nums1.length);
System.arraycopy(nums2, 0, nums_all, nums1.length, nums2.length);
BubbleSort(nums_all);
System.out.println(Arrays.toString(nums_all));
int len = nums_all.length;
double middle = (len%2==0)? (nums_all[len/2]+nums_all[len/2 -1])/2.0:nums_all[(len-1)/2.0];
return middle;
}
public static int[] BubbleSort(int[] s){
int n = s.length;
for(int i=0; i<n; i++){
for(int j=0; j<n-i-1; j++){
if(s[j]>s[j+1]){
int temp = s[j+1];
s[j+1] = s[j];
s[j] = temp;
}
}
}
return s;
}
}