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
求指教,怎么会出现这种情况,需要怎么修改代码,谢谢了!!!

-2
u010479604
u010479604 回复caozhy: 您好,文本文件内容跟这个排序后的差别不大,基本顺序没太大变化。我是按照第一列第二列和第三列分别升序排列的,你看看我的程序里有什么问题没呢,谢谢了,辛苦辛苦了,晚安
9 个月之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复u010479604: 你的文本文件的内容,请贴出来。以及,你按照哪一列排序
9 个月之前 回复
u010479604
u010479604 回复caozhy:抱歉疏忽了, 谢谢您之前的解答,辛苦了,再次谢谢了
9 个月之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 没法回答你,上次回答半天你可是呢,你点个采纳都嫌麻烦。https://ask.csdn.net/questions/714262
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!