首页 > 试题广场 >

中位数

[编程题]中位数
  • 热度指数:15117 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

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


输出描述:
输出中位数,每一组测试数据输出一行
示例1

输入

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

输出

25
40
2
#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<algorithm>
using namespace std;
int main() {
    int n;
    while (scanf("%d",&n)!=EOF)
    {
        if(n==0){
            break;
        }
        int arr[10000];
        for (int i = 0; i < n; i++) {
            int x;
            scanf("%d", &x);
            arr[i] = x;
        }
        sort(arr, arr + n);
            if (n % 2 == 1) {
                printf("%d\n", arr[n / 2]);
            }
            else {
                printf("%d\n", (arr[n / 2] + arr[n / 2 - 1]) / 2);
            }
        }
    return 0;
}
发表于 2026-01-26 16:29:44 回复(0)

问题信息

难度:
1条回答 16467浏览

热门推荐

通过挑战的用户

查看代码
中位数