中位数

来源:互联网 发布:mac. 压缩软件 编辑:程序博客网 时间:2024/04/28 08:30

中位数

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
描述

一组数据按从小到大的顺序依次排列,处在中间位置的一个数叫做中位数。

比如 1 5 10 11 9  其中位数就是9.因为排序过后,9处在中间位置。

现在给你一些数,请你求出其中位数。

输入
第一行输入一个整数T(1<=T<=1000)表示测试数据的组数。
随后的一行是一个奇数M,表示该组测试数据中共有M(1<=M<=1000)个数。
随后的一行有M个互不相同的整数,这些整数都不大于10000且不小于-10000。
输出
对于每组测试数据输出一个整数,表示这M个数的中位数。
样例输入
151 5 10 11 9
样例输出
9

 

 

/*使用qsort函数需要加入#include <stdlib.h>参数为1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序int comp(const void *a, const void *b){return*(int *)a - *(int *)b;}*/#include <stdio.h>#include <stdlib.h>int comp(const void *a,const void *b){return *(int *)a-*(int *)b;}int main(){int T, M, a[1001];scanf("%d", &T);while(T--){scanf("%d", &M);for(int i = 0; i < M; i++){scanf("%d", &a[i]);}qsort(a, M, sizeof(int), comp);printf("%d\n", a[(M-1)/2]);}return 0;} 


使用sort

/*使用sort函数需要在加入#include <algorithm>他是在C++中定义的,升序时不需要使用比较函数,只用两个参数就可以个,分别是首地址和末地址的下一个*/#include <cstdio>#include <algorithm>using namespace std;int main(){int T, M, a[1001];scanf("%d", &T);while(T--){scanf("%d", &M);for(int i = 0; i < M; i++){scanf("%d", &a[i]);}sort(a, a+M);printf("%d\n", a[(M-1)/2]);}return 0;}