zoukankan      html  css  js  c++  java
  • 数据流中的中位数

    题目描述

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
    import java.util.ArrayList;
    import java.util.Collections;
    
    /**
     * @author gentleKay
     * 题目描述
     * 如何得到一个数据流中的中位数?
     * 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。
     * 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
     * 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
     * 用例:
     * 		[5,2,3,4,1,6,7,0,8]
     * 对应输出应该为:
     * 		"5.00 3.50 3.00 3.50 3.00 3.50 4.00 3.50 4.00 "
     */
    
    public class Main61 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    	}
    	
    	ArrayList<Integer> array = new ArrayList<>();
    	
    	public void Insert(Integer num) {
    		array.add(num);
    		Collections.sort(array);
    	}
    
        public Double GetMedian() {
        	int mid = array.size()/2;
            if((array.size()&1) == 0){
                Integer n1 = array.get(mid);
                Integer n2 = array.get(mid - 1);
                double s = (Double.valueOf(n1 + "") + Double.valueOf(n2 + ""))/2;
                return s;
            }else{
                double s = Double.valueOf(array.get(mid) + "");
                return s;
            }
        }
    }
    

      Collections.sort(List<?> list) 用于集合ArrayList之类的排序,

        Arrays.sort(int[] a); 用于数组的排序,

  • 相关阅读:
    Reflections 0.9.12 Caused by: java.lang.IllegalStateException: zip file closed
    关于使用GATEWAY后静态资源失效问题
    Gbase8.7 和shardingsphere4.1.1适配
    统信UOS笔记(V20)
    mysql笔记
    axios 设置全局取消请求
    arr 转 tree
    云知声 面试题
    百度 二面 99 乘法表
    百度 无人车 面试
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/11212323.html
Copyright © 2011-2022 走看看