两个有序数组求中位数
2014-08-19 17:18
260 查看
package com.li.test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;public class Mytest {public static int findMedian(int[] data1, int start1, int end1,int[] data2, int start2, int end2) {if ((end1
- start1 == 1 && end2 - start2 == 2)) {System.out.println("data1偶数,data2奇数");return getMedian(data1[start1], data1[end1],data2[(start2 + end2) / 2]);}if ((end1 - start1 == 2 && end2 - start2 == 1)) {System.out.println("data1奇数,data2偶数");return getMedian(data2[start2],
data2[end2],data1[(start1 + end1) / 2]);}if ((end1 - start1 == 2 && end2 - start2 == 2)) {System.out.println("都是奇数");}if (end1 - start1 == 1 && end2 - start2 == 1) {System.out.println("都是偶数");return getMedian(data1[start1], data1[end1], data2[start2],data2[end2]);}int
index1 = (start1 + end1) / 2;int index2 = (start2 + end2) / 2;if (data1[index1] < data2[index2]) {return findMedian(data1, index1, end1, data2, start2, index2);} else if (data1[index1] < data2[index2]) {return findMedian(data1, start1, index1, data2, index2,
end2);} else {return data1[index1];}}public static int getMedian(int a1, int a2, int a3, int a4) {if (!(a1 < a2) || !(a3 < a4)) {throw new IllegalArgumentException();}System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);return
-1;}public static int getMedian(int a1, int a2, int a3) {if (a1 < a2) {if (a3 < a1) {return a1;} else {if (a2 > a3) {return a3;} else {return a2;}}} else {if (a3 > a1) {return a1;} else {if (a2 > a3) {return a2;} else {return a3;}}}}public static void main(String[]
args) {// TODO Auto-generated method stubint[] data1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int[] data2 = { 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };int result = Mytest.findMedian(data1, 0, data1.length - 1, data2, 0,data2.length - 1);System.out.println(result);}}
- start1 == 1 && end2 - start2 == 2)) {System.out.println("data1偶数,data2奇数");return getMedian(data1[start1], data1[end1],data2[(start2 + end2) / 2]);}if ((end1 - start1 == 2 && end2 - start2 == 1)) {System.out.println("data1奇数,data2偶数");return getMedian(data2[start2],
data2[end2],data1[(start1 + end1) / 2]);}if ((end1 - start1 == 2 && end2 - start2 == 2)) {System.out.println("都是奇数");}if (end1 - start1 == 1 && end2 - start2 == 1) {System.out.println("都是偶数");return getMedian(data1[start1], data1[end1], data2[start2],data2[end2]);}int
index1 = (start1 + end1) / 2;int index2 = (start2 + end2) / 2;if (data1[index1] < data2[index2]) {return findMedian(data1, index1, end1, data2, start2, index2);} else if (data1[index1] < data2[index2]) {return findMedian(data1, start1, index1, data2, index2,
end2);} else {return data1[index1];}}public static int getMedian(int a1, int a2, int a3, int a4) {if (!(a1 < a2) || !(a3 < a4)) {throw new IllegalArgumentException();}System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);return
-1;}public static int getMedian(int a1, int a2, int a3) {if (a1 < a2) {if (a3 < a1) {return a1;} else {if (a2 > a3) {return a3;} else {return a2;}}} else {if (a3 > a1) {return a1;} else {if (a2 > a3) {return a2;} else {return a3;}}}}public static void main(String[]
args) {// TODO Auto-generated method stubint[] data1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int[] data2 = { 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };int result = Mytest.findMedian(data1, 0, data1.length - 1, data2, 0,data2.length - 1);System.out.println(result);}}
相关文章推荐
- 求两个不等长、有序数组的中位数非常简洁的O(log(min(M,N)))迭代解详细解释
- 求两个有序数组的中位数
- 给定两个有序的n长度的数组,如何找出这两个数组合并后的中位数?
- 两个有序数组中找中位数或者第K大的元素
- 求两个有序非等长数组中位数
- 算法基础 - 查找两个有序数组的中位数
- [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数
- 求两个有序数组的中位数或者第k小元素
- 求两个有序数组的中位数
- Median of Two Sorted Arrays(两个有序数组的中位数)
- 在两个有序数组中找到中位数
- 2-找两个有序数组的中位数
- Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode
- 求两个有序数组的中位数-算法导论
- 【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
- 两个有序数组的中位数
- 两个有序数组的中位数
- 求两个有序数组的中位数
- 求两个有序数组的中位数
- (分治算法)两个有序数组中的中位数和Top K问题