中位数
数组是C++语言重要的数据结构,对它的一些基本操作要熟练掌握。那么,今天我们就来讨论,怎么使用冒泡排序的方法,求数组元素的中位数?
案例
题目描述
中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数。
比如:2 5 8 1 6,排序后的结果为1 2 5 6 8,那么这组数的中位数就是5。
再比如:8 9 1 2 3 0,排序后的结果为0 1 2 3 8 9,那么这组书的中位数就是(2+3)/2=2.5。
输入
第一行:一个整数n代表有n个数。
第二行:n个数的值。
样例输入
5
2 5 8 1 6
输出
中位数(结果保留1位小数)。
样例输出
5.0
程序代码
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
/*
思路:先对数组元素排序,然后判断奇偶,找出中位数
*/
int n,a[1000],i,j,t;
double v; // 存放中位数
cin >> n;
for(i = 0 ; i < n ; i++){
cin >> a[i];
}
// 对数组元素按照小到大进行排序
for(i = 1 ; i < n ; i++){
for(j = 0 ; j <= n - i - j ; 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;
}