您的位置:首页 > 其它

两个有序数组求中位数

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);}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: