题目描述
编写Java程序输入n个整数,以及一个整数x,计算这n个整数的中位数并输出。然后将x插入到数组的相应位置,使数组按升序排列。中位数定义:对元素按降序排列,若n是奇数,取(n+1)/2位置的值,否则,取n/2和(n/2+1)的平均值(舍去小数取整)。
输入
n和n个整数,整数x
输出
中位数,插入x后的数组元素
样例输入 Copy
5 1 2 3 4 5 4
样例输出 Copy
3 1 2 3 4 4 5
答案代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] arry = new int[n];
for (int i = 0; i < arry.length; i++) {
arry[i] = input.nextInt();
}
int x = input.nextInt();
Arrays.sort(arry);
int med = median(arry);
System.out.print(med);
int[] arryb = addArry(arry, x);
for (int i = 0; i < arryb.length; i++) {
System.out.print(" " + arryb[i]);
}
}
public static int median(int[] arry) {
int med;
if(arry.length%2 == 0) {
med = (arry[arry.length/2] + arry[arry.length/2-1])/2;
}else {
med = arry[arry.length/2];
}
return med;
}
public static int[] addArry(int[] arry, int n) {
int[] arryb = new int[arry.length+1];
int i;
for (i = 0; i < arry.length; i++) {
arryb[i] = arry[i];
}
arryb[i] = n;
Arrays.sort(arryb);
return arryb;
}
}
答案代码分析
有一个名为Main的类,包含了以下几个方法:
1. main方法:程序的入口点,通过Scanner类获取用户输入的整数数组和一个整数,然后对输入的数组进行排序,并计算其中位数(如果数组长度为偶数,取中间两个数的平均值,如果为奇数,取中间数)。接着调用addArry方法将输入的整数加入到数组中,并对新数组进行排序,最后输出中位数和新数组。
2. median方法:接受一个整型数组作为参数,计算数组的中位数并返回。如果数组长度为偶数,则取中间两个数的平均值,如果为奇数,则取中间数。
3. addArry方法:接受一个整型数组和一个整数作为参数,在数组的末尾添加这个整数,并返回新的整型数组。添加完整数后,对新数组进行排序。
这些方法实现了对输入的整型数组进行排序、计算中位数,并实现了向数组中添加元素并排序的操作。最终输出了计算得到的中位数和添加完整数后的新数组。