中位数
从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,输出其中位数。
说明:中位数(Medians)统计学名词,是指将数据按从小到大顺序排列起来,形成一个数列,居于数列中间位置的那个数据。若数列元素个数为奇数,则中位数为最中间的元素;
若数列元素个数为偶数,则中位数为最中间两个元素的平均数。例如:输入2 7 9 11 5 4 3 6 8 20 0则排序后结果为2 3 4 5 6 7 8 9 11 20,则中间两个数的平均值为6.5
Sample Input
2 7 9 11 5 4 3 6 8 20 0
Sample Output
6.5
#include<iostream>
using namespace std;
const int Max = 100;
int main()
{
int a[Max], n = 0, i, j;
cin >> a[n];
while (a[n])//向数组中输入元素,以0结束
{
n++;
cin >> a[n];
}
for (i = 0; i < n - 1; i++)//冒泡排序
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
if (n % 2 == 1)//若数列元素个数为奇数,则中位数为最中间的元素
cout << a[n / 2] << endl;
else//若数列元素个数为偶数,则中位数为最中间两个元素的平均数
{
cout << (double)(a[n / 2] + a[n / 2 - 1]) / 2 << endl;//因为平均值有可能不是整数,所以将整形转化为实数型
}
return 0;
}