首页 > 其他 > 详细

数据流的中位数

时间:2017-04-11 09:50:40      阅读:116      评论:0      收藏:0      [点我收藏+]

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。

思路:排序找中间

LinkedList<Integer> list=new LinkedList<Integer>();
    public void Insert(Integer num) {
        if(list.size()==0||num<list.getFirst()){
            list.addFirst(num);
        }else{
            boolean falg=false;
            for(Integer e:list){
                if(num<e){
                    int index=list.indexOf(e);
                    list.add(index,num);
                    falg=true;
                    break;
                }
            }
            if(!falg)
                list.addLast(num);
        }
    }

    public Double GetMedian() {
        if(list.size()==0)
            return null;
        if(list.size()%2==0){
            int i=list.size()/2;
           Double a = Double.valueOf(list.get(i - 1) + list.get(i));
            return a/2;
        }
        list.get(0);
         Double b=Double.valueOf(list.get((list.size() + 1) / 2 - 1));
        return Double.valueOf(list.get((list.size() + 1) / 2 - 1));
    }

 

数据流的中位数

原文:http://www.cnblogs.com/team42/p/6691800.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!