// 题目描述
// 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,
// 那么中位数就是所有数值排序之后位于中间的数值。
// 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
LinkedList<Integer> linkedList = new LinkedList<Integer>();
public void Insert(Integer num) {
if (linkedList.size()==0||num<linkedList.getFirst()){
linkedList.addFirst(num);
}else{
boolean isMax = true;
for (Integer integer: linkedList) {
if (num<integer){
int index = linkedList.indexOf(integer);
linkedList.add(index,num);
isMax = false;
break;
}
}
if (isMax) {
linkedList.addLast(num);
}
}
}
public Double GetMedian() {
if (linkedList.size()==0){
return null;
}
if (linkedList.size()%2==1){
int index = linkedList.size()/2;
return Double.valueOf(linkedList.get(index));
}else{
int index = linkedList.size()/2;
Double result = (linkedList.get(index)+linkedList.get(index-1))/2.0;
return result;
}
}