【排序】找中间数

题目描述

将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\n",a[(1+n)/2]);
13     return 0;
14 }
View Code

 

posted @ 2018-08-09 16:16  Scott_Wong  阅读(848)  评论(0)    收藏  举报