题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
思路:排序找中间
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)); }
时间: 2024-10-06 07:29:10