91分,求各位大佬救救
查看原帖
91分,求各位大佬救救
1468070
HITlihaowen楼主2024/12/13 16:49
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void change(double a[2][1000],int i,int j)
{
    double p;
    p=a[0][i];
    a[0][i]=a[0][j];
    a[0][j]=p;
    p=a[1][i];
    a[1][i]=a[1][j];
    a[1][j]=p;
}
void quick(double a[2][1000],int left,int right)
{
    if(left>=right)
        return;
    int last=left;
    change(a,left,(left+right)/2);
    for(int i=left+1;i<=right;i++)
    {
        if(a[1][i]<=a[1][left])
            change(a,++last,i);
    }
    change(a,left,last);
    quick(a,left,last-1);
    quick(a,last+1,right);
}
//上为快速排序函数
int main()
{
    int n;
    double a[2][1000]={0};
    a[0][0]=1;
    scanf("%d",&n);
    for(int i=1;i<n;i++)
        a[0][i]=a[0][i-1]+1;
    for(int i=0;i<n;i++)
        scanf("%lf",&a[1][i]);
    quick(a,0,n-1);
    for(int i=0;i<n;i++)
        printf("%.0lf ",a[0][i]);
    printf("\n");
    double t=0,tt;
    for(int i=n-1;i>=0;i--)
    {
        tt=0;
        for(int j=i-1;j>=0;j--)
            tt+=a[1][j]/(double)n;
        t+=tt;
    }
    printf("%.2lf",t);
    return 0;
}

仅数据点1报错,但数据点1就是输入样例,输出结果没发现有问题,求各位大佬救救

2024/12/13 16:49
加载中...