题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
import java.util.ArrayList;
/**
*插入:按照插入排序法从小到大插入
插入排序的思想是,将新来的元素按顺序放入一个已有的有序序列当中。
获取:获取数据流大小,
奇数:即为中间那个数;
偶数:中间两个数和/2
*
*/
public class Solution {
ArrayList<Integer> list=new ArrayList<Integer>();
public void Insert(Integer num) {
int index=0;
int size=list.size();
while(index<size){
//如果插入的数小于这个值,就放在此位置
if(num<list.get(index)){
break;
}
index++;
}
list.add(index,num);
}
public Double GetMedian() {
int size=list.size();
//偶数
if((size & 1)==0)
return (double)((list.get((size-1)/2))+(list.get((size)/2)))/2.0;
return (double)list.get((size-1)/2);
}
}