需求:
为了解新学期学生暴涨的问题,小乐村要建立所新学校,考虑到学生上学安全问题,需要所有学生家到学校的距离最短。 假设学校和所有学生家都走在一条直线之上,请问学校建立在什么位置,能使得到学校到各个学生家的距离和最短。
输入描述:
第一行:整数n取值范围[1,1000],表示有n户家庭。
第二行:一组整数m取值范围[0,10000],表示每户家庭的位置,所有家庭的位置都不相同。
输出描述:
一个整数,确定的学校的位置,如果有多个位置,则输出最小的。
输入
5
0 20 40 10 30
输出
20
编码:
public class AddressNew {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入用户:");
int n = sc.nextInt();
sc.nextLine(); // 这里使用nextLine()来接收上面的'\n'
System.out.print("输入" + n + "个所有家庭位置:");
String[] strs = sc.nextLine().split(" ");
//字符串数组转换成整数数组
int[] arr = Arrays.asList(strs).stream().mapToInt(Integer::parseInt).toArray();
//(1)排序
Arrays.sort(arr);
System.out.println("排序后数据:"+Arrays.toString(arr));
//(2)最小距离(求中位数)
int min = 0;
//判断是偶数还是奇数,
if (n % 2 == 0) {
min = arr[n / 2 - 1];
} else {
min = arr[n/2];
}
System.out.println("最小距离:" + min);
}
}