求中位数
如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
使用List集合将数据插入,再将集合是用升序排序
判断集合中的数个数是奇数还是偶数
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/**
* @author yezhiming
*2019年9月28日
*@version
*/
public class MiddleNumber {
List<Integer> list = new ArrayList<Integer>();
public static void main(String[] args) {
MiddleNumber middleNumber = new MiddleNumber();
middleNumber.Insert(1);
middleNumber.Insert(5);
middleNumber.Insert(3);
middleNumber.Insert(2);
middleNumber.Insert(6);
middleNumber.Insert(7);
System.out.println("中位数为:"+middleNumber.GetMedian() );
}
public void Insert(Integer num) {
list.add(num);
}
public Double GetMedian() {
Double middle;
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
if(list.size() == 0){
System.out.println("数据流中的数为空");
}
if (list.size()%2==0) {
Double front = Double.valueOf(list.get(list.size()/2-1));
Double latter = Double.valueOf(list.get(list.size()/2));
System.out.println(front);
System.out.println(latter);
middle = (front + latter ) /2 ;
}else {
System.out.println(list.get(list.size()/2));
middle = Double.valueOf(list.get(list.size()/2));
}
return middle;
}
}