有空请帮我看看哪儿错了

img

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,a[1000010]={0};
void pai(int a[],int n)
{
    int i,j,gap=n/2;
    int temp;
    while(gap>0)
    {
        for(int i=gap;i<=n;i++)
        {
            temp=a[i];
            j=i-gap;
            while(j>=0&&temp<a[j])
            {
                a[j+gap]=a[j];
                j=j-gap;
            }
            a[j+gap]=temp;
        }
        gap/=2;
    }
}
int main()
{
    double b=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    pai(a,n);
    for(int i=1;i<=n;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
    for(int i=2;i<=n-1;i++)
    {
        b+=(double)a[i]/(n-2);
    }
    printf("%.2lf",b);
}

大哥,你这个为什么有这么多循环,时间复杂度太高了。基本思路先排个序,最多两个循环一嵌套,然后直接for一个从1开始到n-2计算一下不就行了吗?搞这么复杂,很容易出错