| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:【求教】不能准确排序的原因?
只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
已结贴  问题点数:20 回复次数:4 
【求教】不能准确排序的原因?
#include<stdio.h>            
#include<stdlib.h>            
int commpC(const void *a, const void *b)            
{            
return *( float*)b > *(float *)a ? 1 : -1;            
}               
main()            
{   
 float m=   3.6,n=   6.333333, mn[15] ;

    int c[62]={1  ,3  ,4  ,8  ,16 ,24 ,28 ,33 ,34 ,35 ,39 ,41 ,45 ,50 ,51 ,56 ,60 ,61 ,62 ,69 ,        
70 ,72 ,76 ,80 ,87 ,88 ,92 ,93 ,94 ,96 ,102,107,110,115,120,122,126,130,136,139,            
145,148,153,160,162,167,174,182,183,190,191,192,193,194,202,207,209,211,212,214,            
217,224 },            
            
        i[10][17]={2  ,6  ,12 ,13 ,14 ,15 ,16 ,20 ,23 ,24 ,25 ,26 ,27 ,30 ,31 ,33 ,34 ,1  ,2  ,3  ,   
4  ,11 ,12 ,13 ,14 ,15 ,19 ,24 ,26 ,29 ,33 ,34 ,36 ,39 ,1  ,3  ,4  ,9  ,12 ,13 ,            
21 ,29 ,32 ,33 ,34 ,41 ,42 ,43 ,48 ,49 ,52 ,0  ,5  ,8  ,10 ,18 ,21 ,22 ,28 ,35 ,            
43 ,46 ,47 ,48 ,51 ,52 ,53 ,54 ,0  ,5  ,6  ,7  ,11 ,14 ,15 ,17 ,20 ,22 ,23 ,25 ,            
27 ,28 ,35 ,36 ,38 ,2  ,11 ,12 ,13 ,14 ,16 ,19 ,20 ,23 ,24 ,25 ,26 ,27 ,30 ,31 ,            
32 ,33 ,1  ,2  ,3  ,4  ,10 ,11 ,12 ,13 ,14 ,19 ,24 ,26 ,29 ,32 ,33 ,34 ,39 ,1  ,            
3  ,4  ,9  ,10 ,12 ,13 ,21 ,23 ,32 ,33 ,34 ,41 ,43 ,48 ,49 ,52 ,0  ,5  ,8  ,10 ,            
18 ,21 ,22 ,23 ,28 ,31 ,35 ,38 ,43 ,46 ,47 ,48 ,51 ,0  ,3  ,6  ,7  ,11 ,14 ,15 ,            
17 ,20 ,22 ,25 ,27 ,31 ,36 ,38 ,40 ,41  },j;            

if(i[0][2]-i[0][1]-i[0][0]!=0)
mn[0]=(m+n)/2-(float)(c[i[0][2]]-c[i[0][1]]-c[i[0][0]])/(i[0][2]-i[0][1]-i[0][0]);
if(i[0][2]-i[0][1]-i[0][0]==0)
mn[0]=1000;

if(i[0][3]-i[0][2]-i[0][1]!=0)
 mn[1]=(m+n)/2-(float)(c[i[0][3]]-c[i[0][2]]-c[i[0][1]])/(i[0][3]-i[0][2]-i[0][1]);   
if(i[0][3]-i[0][2]-i[0][1]==0)
 mn[1]=1000;   
 
if(i[0][4]-i[0][3]-i[0][2]!= 0)
     mn[2]=(m+n)/2-(float)(c[i[0][4]]-c[i[0][3]]-c[i[0][2]])/(i[0][4]-i[0][3]-i[0][2]);
if(i[0][4]-i[0][3]-i[0][2]== 0)
 mn[2]=1000;

if(i[0][5]-i[0][4]-i[0][3]!= 0)
mn[3]=(m+n)/2-(float)(c[i[0][5]]-c[i[0][4]]-c[i[0][3]])/(i[0][5]-i[0][4]-i[0][3]);
if(i[0][5]-i[0][4]-i[0][3]== 0)
 mn[3]=1000;
 
if(i[0][6]-i[0][5]-i[0][4]!=0)
mn[4]=(m+n)/2-(float)(c[i[0][6]]-c[i[0][5]]-c[i[0][4]])/(i[0][6]-i[0][5]-i[0][4]);
if(i[0][6]-i[0][5]-i[0][4]==0)
 mn[0]=1000;   

if(i[0][7]-i[0][6]-i[0][5]!=0)
 mn[5]=(m+n)/2-(float)(c[i[0][7]]-c[i[0][6]]-c[i[0][5]])/(i[0][7]-i[0][6]-i[0][5]);   
if(i[0][7]-i[0][6]-i[0][5]==0)
 mn[1]=1000;   
 
if(i[0][8]-i[0][7]-i[0][6]!= 0)
     mn[6]=(m+n)/2-(float)(c[i[0][8]]-c[i[0][7]]-c[i[0][6]])/(i[0][8]-i[0][7]-i[0][6]);
if(i[0][8]-i[0][7]-i[0][6]== 0)
 mn[2]=1000;

if(i[0][9]-i[0][8]-i[0][7]!= 0)
mn[7]=(m+n)/2-(float)(c[i[0][9]]-c[i[0][8]]-c[i[0][7]])/(i[0][9]-i[0][8]-i[0][7]);
if(i[0][9]-i[0][8]-i[0][7]== 0)
 mn[3]=1000;
 
if(i[0][10]-i[0][9]-i[0][8]!=0)
mn[8]=(m+n)/2-(float)(c[i[0][10]]-c[i[0][9]]-c[i[0][8]])/(i[0][10]-i[0][9]-i[0][8]);
if(i[0][10]-i[0][9]-i[0][8]==0)
mn[0]=1000;

if(i[0][11]-i[0][10]-i[0][9]!=0)
 mn[9]=(m+n)/2-(float)(c[i[0][11]]-c[i[0][10]]-c[i[0][9]])/(i[0][11]-i[0][10]-i[0][9]);     
if(i[0][11]-i[0][10]-i[0][9]==0)
 mn[1]=1000;   
 
if(i[0][12]-i[0][11]-i[0][10]!= 0)
     mn[10]=(m+n)/2-(float)(c[i[0][12]]-c[i[0][11]]-c[i[0][10]])/(i[0][12]-i[0][11]-i[0][10]);
if(i[0][12]-i[0][11]-i[0][10]== 0)
 mn[2]=1000;

if(i[0][13]-i[0][12]-i[0][11]!= 0)
mn[11]=(m+n)/2-(float)(c[i[0][13]]-c[i[0][12]]-c[i[0][11]])/(i[0][13]-i[0][12]-i[0][11]);   
if(i[0][13]-i[0][12]-i[0][11]== 0)
 mn[3]=1000;
 
if(i[0][14]-i[0][13]-i[0][12]!=0)
mn[12]=(m+n)/2-(float)(c[i[0][14]]-c[i[0][13]]-c[i[0][12]])/(i[0][14]-i[0][13]-i[0][12]);
if(i[0][14]-i[0][13]-i[0][12]==0)
 mn[0]=1000;   

if(i[0][15]-i[0][14]-i[0][13]!=0)
 mn[13]=(m+n)/2-(float)(c[i[0][15]]-c[i[0][14]]-c[i[0][13]])/(i[0][15]-i[0][14]-i[0][13]);     
if(i[0][15]-i[0][14]-i[0][13]==0)
 mn[1]=1000;   
 
if(i[0][16]-i[0][15]-i[0][14]!= 0)
     mn[14]=(m+n)/2-(float)(c[i[0][16]]-c[i[0][15]]-c[i[0][14]])/(i[0][16]-i[0][15]-i[0][14]);
if(i[0][16]-i[0][15]-i[0][14]== 0)
mn[2]=1000;

         for(j=0;j<15;j++)

printf("%f\n", mn[j]);    printf("\n");               

     qsort(mn, sizeof(mn)/sizeof(float)/2, 2*sizeof(float ),commpC);            
               
 for(j = 0; j < sizeof(mn)/sizeof(float )/2; j++)               
 {   
printf("%f", mn[j]);   
printf("\n");               
               
               
}   
}

   
1.716666
0.366666
0.966666
1.216666
1.351282
0.784848
1.120513
1.650877
1.375757
1.357971
1.341666
1.357971
1.582051
1.609524
1.566666

1.716666
1.716666
1.716666
1.716666
1.716666
1.716666
1.716666
Press any key to continue        
搜索更多相关主题的帖子: include return 
2017-02-01 14:53
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:20 
qsort(mn, sizeof(mn)/sizeof(float), sizeof(float ),commpC);            
               
 for(j = 0; j < sizeof(mn)/sizeof(float ); j++)   

为什么要除以2呢,一维数组啊

早知做人那么辛苦!  当初不应该下凡
2017-02-01 15:38
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
感谢指教!现在可以把几个分散的程序集中到一个程序里计算了,这样省了无数次复制粘贴的苦!菩萨保佑!
1.716666
0.366666
0.966666
1.216666
1.351282
0.784848
1.120513
1.650877
1.375757
1.357971
1.341666
1.357971
1.582051
1.609524
1.566666

1.716666
1.650877
1.609524
1.582051
1.566666
1.375757
1.357971
1.357971
1.351282
1.341666
1.216666
1.120513
0.966666
0.784848
0.366666
Press any key to continue

1.716666
0.366666
0.966666
1.216666
1.351282
0.784848
1.120513
1.650877
1.375757
1.357971
1.341666
1.357971
1.582051
1.609524
1.566666

0.366666
0.784848
0.966666
1.120513
1.216666
1.341666
1.351282
1.357971
1.357971
1.375757
1.566666
1.582051
1.609524
1.650877
1.716666
Press any key to continue


[此贴子已经被作者于2017-2-1 15:59编辑过]

2017-02-01 15:53
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
代码可简化如下:
程序代码:
#include<stdio.h>            
#include<stdlib.h>            
int commpC(const void *a, const void *b)            
{            
    return *( float*)b > *(float *)a ? 1 : -1;            
}                
main()            
{    
    float m=   3.6,n=   6.333333, mn[15] ;
    
    int c[62]={1  ,3  ,4  ,8  ,16 ,24 ,28 ,33 ,34 ,35 ,39 ,41 ,45 ,50 ,51 ,56 ,60 ,61 ,62 ,69 ,        
        70 ,72 ,76 ,80 ,87 ,88 ,92 ,93 ,94 ,96 ,102,107,110,115,120,122,126,130,136,139,            
        145,148,153,160,162,167,174,182,183,190,191,192,193,194,202,207,209,211,212,214,            
        217,224 },            
        
        i[10][17]={2  ,6  ,12 ,13 ,14 ,15 ,16 ,20 ,23 ,24 ,25 ,26 ,27 ,30 ,31 ,33 ,34 ,1  ,2  ,3  ,    
        4  ,11 ,12 ,13 ,14 ,15 ,19 ,24 ,26 ,29 ,33 ,34 ,36 ,39 ,1  ,3  ,4  ,9  ,12 ,13 ,            
        21 ,29 ,32 ,33 ,34 ,41 ,42 ,43 ,48 ,49 ,52 ,0  ,5  ,8  ,10 ,18 ,21 ,22 ,28 ,35 ,            
        43 ,46 ,47 ,48 ,51 ,52 ,53 ,54 ,0  ,5  ,6  ,7  ,11 ,14 ,15 ,17 ,20 ,22 ,23 ,25 ,            
        27 ,28 ,35 ,36 ,38 ,2  ,11 ,12 ,13 ,14 ,16 ,19 ,20 ,23 ,24 ,25 ,26 ,27 ,30 ,31 ,            
        32 ,33 ,1  ,2  ,3  ,4  ,10 ,11 ,12 ,13 ,14 ,19 ,24 ,26 ,29 ,32 ,33 ,34 ,39 ,1  ,            
        3  ,4  ,9  ,10 ,12 ,13 ,21 ,23 ,32 ,33 ,34 ,41 ,43 ,48 ,49 ,52 ,0  ,5  ,8  ,10 ,            
        18 ,21 ,22 ,23 ,28 ,31 ,35 ,38 ,43 ,46 ,47 ,48 ,51 ,0  ,3  ,6  ,7  ,11 ,14 ,15 ,            
        17 ,20 ,22 ,25 ,27 ,31 ,36 ,38 ,40 ,41  },j;            
    

    for(j=2;j<17;j++)   //所有条件赋值行为简化为一个循环解决
        if(i[0][j]-i[0][j-1]-i[0][j-2]!= 0)
            mn[j-2]=(m+n)/2-(float)(c[i[0][j]]-c[i[0][j-1]]-c[i[0][j-2]])/(i[0][j]-i[0][j-1]-i[0][j-2]);
        else
            mn[(j-2)%4]=1000;
    for(j=0;j<15;j++)
        
        printf("%f\n", mn[j]);    printf("\n");                
    
    qsort(mn, sizeof(mn)/sizeof(float), sizeof(float ),commpC);            
    
    for(j = 0; j < sizeof(mn)/sizeof(float ); j++)                
    {    
        printf("%f", mn[j]);    
        printf("\n");                
    }    
}
2017-02-01 16:29
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 4楼 xzlxzlxzl
非常感谢指教!让我省写了几千行的程序,减去了太多的辛苦!祝您新年愉快!
1.716666
0.366666
0.966666
1.216666
1.351282
0.784848
1.120513
1.650877
1.375757
1.357971
1.341666
1.357971
1.582051
1.609524
1.566666

1.716666
1.650877
1.609524
1.582051
1.566666
1.375757
1.357971
1.357971
1.351282
1.341666
1.216666
1.120513
0.966666
0.784848
0.366666
Press any key to continue

2017-02-01 16:50
快速回复:【求教】不能准确排序的原因?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041175 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved