​​​​​​​        ​​​​​​​        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; //完结散花!!!
}