JavaStudy35:中位数

JavaStudy35:中位数

总时间限制: 

2000ms

 

内存限制: 

65536kB

描述

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值).
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入

该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1 <= N <= 15000.
接着N行为N个数据的输入,N=0时结束输入

输出

输出中位数,每一组测试数据输出一行

样例输入

4
10
30
20
40
3
40
30
50
4
1
2
3
4
0

样例输出

25
40
2

代码

 

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
		int n,a[];
		a=new int [15000];
		while(true) 
		{
			n=cin.nextInt();
			if(n==0)break;
			for(int j=1;j<=n;j++)
			{
				a[j]=cin.nextInt();
			}
			Arrays.sort(a,1,n+1);
			if(n%2==0) {
				int t=n/2;
				int ans=(a[t]+a[t+1])/2;
				System.out.println(ans);
			}
			else System.out.println(a[n/2+1]);
		}
    }
}

思路解析

1.创建足够大数组,while(true)一直接受数据,直到输入=0时跳出while循环。

2.利用Arrays.sort()方法排序。若一组数据为偶数则输出两个中间值的平均值,若为奇数则输出中间值。

知识

Arrays.sort()排序

 

你可能感兴趣的:(JavaStudy35:中位数)