• 两组有序数列的中位数


    两组升序排列的数组A[m]和B[n], 求他们的中位数。

    注意,中位数的概念哦~相信你会百度一下的~

    格式:

    第一行输入数字m,接下来一行输入数组A[m], 第三行输入数字n,第四行输入数组B[n],接下来输出中位数。两个数组的长度都不超过1000。

    注意,需要保留5位小数哦~所以,你设计函数的时候请设计成double类型哦~

    样例输入

    1
    3
    5
    1 2 4 5 6

    样例输出

    3.50000


    package jsk;
    
    import java.util.Scanner;
    
    public class Main23 {
    	private static Scanner input;
    	public static void main(String[] args) {
    		//两组升序排列的数组A[m]和B[n],求他们的中位数
    		input = new Scanner(System.in);
    		int m = input.nextInt();
    		int [] array1 =new int[m];
    		init(array1);
    		int n = input.nextInt();
    		int [] array2 = new int[n];
    		init(array2);
    		//把这两个数组合并起来
    		mearge(array1,array2);
    	}
    	private static void init(int [] array) {
    		for (int i =0;i<array.length;i++) {
    			array[i] = input.nextInt();
    		}
    	}
    	public static void mearge(int[]array1,int[]array2){
    		int p1 = array1.length-1;
    		int p2 = array2.length-1;
    		//循环遍历array1,array2,然后合并起来
    		int newLength = array1.length+array2.length-1;
    		int [] newArray = new int[newLength+1];
    		while (p1 >= 0 && p2 >= 0) {//二者长度相等部分
    			if (array1[p1] >= array2[p2]) {
    				newArray[newLength] = array1[p1];
    				p1--;
    				newLength--;
    			} else {
    				newArray[newLength] = array2[p2];
    				newLength--;
    				p2--;
    			}
    		}
    		//假设a数组多出来
    		while (p1 >=0) {
    			newArray[newLength] = array1[p1];
    			newLength--;
    			p1--;
    			
    		}
    		//假设b数组多出来
    		while (p2 >=0) {
    			newArray[newLength] = array2[p2];
    			newLength--;
    			p2--;
    		}
    		//求中位数,如果这这个中位数是奇数的,直接取中间的数,如果是偶数的话取中间减一,加一两个数的平均数
    		if (newArray.length%2 == 1) {
    			System.out.println(newArray[newArray.length/2+1]);
    		}else{
    			int number1 = newArray[newArray.length/2];
    			int number2 = newArray[newArray.length/2-1];
    			System.out.printf("%.5f",(double)(number1+number2)/2);
    		}
    		
    		
    	}
    	
    }
    
  • 相关阅读:
    python爬虫-selenium八大定位笔记
    git pull : error: cannot lock ref 'refs/remotes/origin/*' (unable to update local ref) 解决方案
    Lua table.sort()原理和使用的坑
    Unity---有关游戏物体角度的两种赋值方法这件事
    C# #if、#endif和预处理指令
    Unity 4大坐标系 和 屏幕坐标与UI坐标的转换问题
    第2次参加游戏开发比赛
    Unity Text添加空格导致换行问题的两种解决方法(还有lua的解决方法)
    MySQL是如何处理千万级数据
    PHP使用守护进程处理队列
  • 原文地址:https://www.cnblogs.com/airycode/p/5808837.html
Copyright © 2020-2023  润新知