CSP小中大
作者:互联网
题目要求:
要求输入有序的整数序列,最多不超过100000个,从中找出最大值、最小值、中位数。
题目分析:
既然序列是有序的,那么最值一定出现在两端,根据输入的n是奇数还是偶数来采用不同的方法求中位数,最后注意判断中位数是否为小数即可。
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int a[100000];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int min, max;
int e = 0;
float mid;
min = a[0];
max = a[n - 1];
if (min > max) {
min = min ^ max;
max = min ^ max;
min = min ^ max;
}
if (n % 2 == 0) {
if ((a[n / 2 - 1] + a[n / 2]) % 2 != 0)
e = 1;
mid = ((float)a[n / 2 - 1] + (float)a[n / 2]) / 2;
}
else
mid = a[n / 2];
cout << max << " " <<setiosflags(ios_base::fixed) << setprecision(e)<< mid << " " << min;
}
标签:小中大,min,int,max,float,mid,中位数,CSP 来源: https://blog.csdn.net/weixin_43074474/article/details/101121750