1233 - 求中位数
题目描述
中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数!
比如:22 55 88 11 66 ,排序后的结果为 11 22 55 66 88 ,那么这组数的中位数就是 55 !
再比如: 88 99 11 22 33 00 ,排序后的结果为 00 11 22 33 88 99 ,那么这组数的中位数就是 (2+3)/2=2.5(2+3)/2=2.5 。
输入
第一行:一个整数 n 代表有 n 个数( n≤100n≤100) 。
第二行: n 个数的值。
输出
中位数(结果保留1位小数)。
样例1
输入
5
2 5 8 1 6输出
5.0
样例2
输入
6
8 9 1 2 3 0输出
2.5
<--话不多说,请看-->
#include <iostream> #include <iomanip> using namespace std; //每天小知识:declared:定义, scope:区域 int main() { int n, a[10000], t; double v; //存放中位数 cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } //对数组元素按照由小到大进行排序 for (int i = 1; i < n; i++) { //第i轮从下标为0的数,排序到下标为为n - i(循环到n - i - 1) for (int j = 0; j <= n - i - 1; j++) { if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //得到中位数 if (n % 2 != 0) { v = a[n / 2]; } else { v = (a[n / 2] + a[n / 2 - 1]) / 2.0; } cout << fixed << setprecision(1) << v << endl; return 0; //完结散花!!! }