大佬们看看这个求数据平均值,方差等数据的代码,有什么问题吧并没有太多注释
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
struct shu{
double first;
int second;
}a[10001];
int c[10001];
int n;
int main(){
//freopen("shuju.in","r",stdin);
cin>>n;
int b=0;
int maxn=INT_MIN,minn=INT_MAX,maxm=0;
for(int i=1;i<=n;i++){
cin>>b;
maxn=max(maxn,b);
minn=min(minn,b);
c[i]=b;
a[b].first=b;
a[b].second++;
maxm=max(maxm,a[b].second);
}
sort(c+1,c+1+n);
int cnt=0;
double ansp=0;
for(int i=1;i<=maxn;i++){
cnt=cnt+a[i].second;
ansp=ansp+a[i].first*a[i].second;
}
double zhong4[n]={};//众数
for(int i=1;i<=maxn;i++){
if(a[i].second==maxm){
zhong4[i]=a[i].first;
}
}
double ping=ansp/cnt;//平均数
double ji=maxn-minn;//极差
double zhong3=(c[int(ceil((1+n)/2))]+c[int(floor((1+n)/2))])/2;//中位数
double fang;//方差
for(int i=1;i<=n;i++){
fang=fang+pow(c[i]-ping,2);
}
fang=fang/n;
double biao=sqrt(fang);
cout<<ping<<endl<<zhong3<<endl;
for(int i=1;i<=maxn;i++){
if(zhong4[i]!=0){
cout<<fixed<<zhong4[i]<<" ";
}
}
cout<<endl<<ji<<endl<<fang<<endl<<biao;
//fclose(stdin);
return 0;
}