中位数:
简单解释就是最中间的那个数,如果集合是奇数个,则中位数是按大小排列最中间那个数,如果集合是偶数个,则中位数就是按大小排列最中间那两个数的平均数。
求解:
- 先判断这个集合是奇数还是偶数,如果是奇数那么就是第(n+1)/2个数 ,下标为(n-1)/2
- 如果是偶数 就是第n/2和n/2+1的数的平均值 也就是下标为n/2-1和n/2的平均值
实现代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class 中位数 {
private static double median(List<Integer> list) {
double s = 0;
Collections.sort(list);
int size = list.size();
if(size % 2 != 1){
s = (list.get(size/2-1) + list.get(size/2)+0.0)/2;//加0.0是为了计算是将int类型转换为浮点型
}else {
s = list.get((size-1)/2);
}
return s;
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
System.out.print("中位数为:");
System.out.println(median(list));
}
}