u010479604 2018-11-24 07:03 采纳率: 83.3%
浏览 334

C语言快速排序后,没有达到排序效果,帮忙看看,谢谢了,代码如下:

#include
#include
#include
#include
#define STEP 10356
#define COORD 4
float s[STEP][COORD];
struct item
{
float a;
float b;
float c;
float d;
};
struct item m[10356];

int cmp(const void *a, const void*b)
{
struct item *c = (struct item *)a;
struct item *d = (struct item *)b;
if(c->a != d->a)
return c->a - d->a;
else if(c->b != d->b)
return c->b - d->b;
else if(c->c != d->c)
return c->c - d->c;
else
return c->d - d->d;
}

int main()
{
FILE *fp1, *fp2;
int n=10356,i,j;

fp1=fopen("1-NewSC-20-0-3-0.1-nodiv.txt","r");
for(i=0;i<STEP;i++)
{
   for(j=0;j<COORD;j++)
    {
        fscanf(fp1,"%f",&s[i][j]);
    }
        fscanf(fp1,"\n");
}
fclose(fp1); 

fp1=fopen("1-NewSC-20-0-3-0.1-nodiv.txt","r");
for (int i = 0; i < n; i++) {
    m[i].a=s[i][0];
    m[i].b=s[i][1];
    m[i].c=s[i][2];
    m[i].d=s[i][3];
    printf("%10.2f %10.2f %10.2f %10.6f\n", m[i].a, m[i].b, m[i].c, m[i].d);
    printf("\n");
}
fclose(fp1);    
qsort(m,n,sizeof(m[0]),cmp);
fp2=fopen("1排序.txt","w+");
for(i=0;i<n;i++){
    printf("%10.2f %10.2f %10.2f %10.6f\n",m[i].a,m[i].b,m[i].c,m[i].d);
    printf("\n");
    fprintf(fp2,"%10.2f %10.2f %10.2f %10.6f\n", m[i].a,m[i].b,m[i].c,m[i].d);
}
fclose(fp2); 
return 0;

}

但是排序出来结果则是:
2.00 -89.14 6.88 0.000007
2.00 -86.27 4.02 0.000012
2.00 -89.14 4.02 0.000006
1.99 -44.02 -18.56 0.000157
1.48 -73.12 -22.40 0.000002
2.00 -83.41 1.15 0.000005
1.99 -86.26 1.15 0.000009
1.99 -89.14 1.15 0.000010
1.46 -11.57 7.85 0.000005
1.51 -69.49 -22.40 0.000016
2.00 -86.27 -1.73 0.000003
1.39 -80.48 77.79 0.000003
1.55 -66.03 -22.40 0.000053
2.00 -86.28 -4.60 0.000001
2.00 -89.14 -4.60 0.000002
1.59 -62.74 -22.40 0.000174
1.64 -59.64 -22.40 0.000340
2.00 -86.27 18.71 0.000061
2.00 -89.14 18.71 0.000055
1.69 -56.72 -22.40 0.000537
1.75 -53.99 -22.40 0.000635
1.99 -80.47 15.94 0.000052
1.76 -11.12 -88.31 0.000216
1.97 -86.22 15.94 0.000053
1.97 -89.13 15.94 0.000035
……………………………………………………
……………………………………………………
1.80 84.57 32.45 0.000028
1.80 84.58 48.39 0.000128
1.80 84.59 4.47 0.000008
1.80 84.58 -17.52 0.000018
1.80 84.57 1.28 0.000001
1.80 84.57 43.87 0.000152
1.80 87.77 -5.11 0.000001
1.80 87.77 4.47 0.000002
1.80 87.77 18.13 0.000076
2.00 85.12 16.34 0.000097
1.80 87.77 27.85 0.000109
1.80 87.77 39.36 0.000151
求指教,怎么会出现这种情况,需要怎么修改代码,谢谢了!!!

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题