#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll a[1000006];
int main()
{
ll n;
scanf("%lld",&n);
for(ll i=0;i<n;i++)
scanf("%lld",&a[i]);
if(n%2==1)
{
nth_element(a,a+n/2,a+n);// n/2表示数列中第n/2+1个大的数
printf("%lld\n",a[n/2]);
}
else
{
nth_element(a,a+n/2,a+n);
ll p=a[n/2];
nth_element(a,a+n/2-1,a+n);
ll q=a[n/2-1];
double ans=(p+q)/2.0;
ll zhi;
if(ans<0)
{
double cnt=fabs(ans);
ll x=floor(cnt);
if(double(x)==cnt) zhi=-x;
else zhi=-(x+1);
}
else zhi=floor(ans);
printf("%lld\n",zhi);
}
return 0;
}
求一串无序数列的中位数
猜你喜欢
转载自blog.csdn.net/haohaoxuexilmy/article/details/83044648
今日推荐
周排行