【排序】找中间数

题目描述

将N(N为奇数)个数排序,必有一个数在这N个数的中间位置。请输出中间位置上的这个数。第一行输入N的值(N≤10000),第二行输入这N个不同的数(每个数的范围在10-20~1020之间)。

输入

第一数字N表示有N个数,接下来N个数

输出

输出其中位数 保留两位小数。

样例输入

7
5 4 2 1 3 9 10

样例输出

4.00
直接定义double类型的数组,用sort排序,最后输出中间的数就行了
这题我一开始定义的数组是从0~n-1的,排完序输出a[n/2],然后就WA
我换成1~n,排完序输出a[(n+1)/2]就AC了
不知道为什么~~~
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 double a[10005];
 5 int n;
 6 int main()
 7 {
 8     scanf("%d",&n);
 9     for(int i=1;i<=n;i++)
10         scanf("%lf",&a[i]);
11     sort(a+1,a+1+n);
12     printf("%.2lf
",a[(1+n)/2]);
13     return 0;
14 }
View Code
如有错误,请指正,感谢!
原文地址:https://www.cnblogs.com/scott527407973/p/9449674.html