| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1023 人关注过本帖
标题:二维数组循环赋值 ,怎么用qsort排序?
只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
已结贴  问题点数:60 回复次数:2 
二维数组循环赋值 ,怎么用qsort排序?
#include<stdio.h>               
#include<stdlib.h>               
int commpC(const void *a, const void *b)               
{               
    return *( int *)b > *(int *)a ? 1 : -1;               
}                    
main()              
{      
    int mn1[15][2];
   

  int c[83]={1  ,2  ,4  ,5  ,6  ,7  ,10 ,11 ,14 ,19 ,20 ,21 ,24 ,25 ,26 ,29 ,30 ,31 ,33 ,34 ,
35 ,43 ,44 ,45 ,47 ,48 ,49 ,50 ,52 ,56 ,57 ,58 ,60 ,61 ,63 ,64 ,65 ,71 ,72 ,73 ,
74 ,75 ,76 ,77 ,78 ,82 ,86 ,87 ,90 ,92 ,93 ,94 ,97 ,100,101,105,107,108,109,110,
111,114,115,116,118,119,121,122,124,125,127,129,130,131,132,133,134,135,136,138,
139,143,148

},                        
                    
        i[10][17]={2  ,3  ,6  ,8  ,23 ,24 ,27 ,28 ,29 ,30 ,32 ,36 ,40 ,41 ,47 ,49 ,50 ,2  ,8  ,11 ,
14 ,17 ,22 ,23 ,26 ,27 ,29 ,35 ,39 ,40 ,44 ,46 ,47 ,49 ,1  ,5  ,10 ,11 ,13 ,14 ,
16 ,20 ,21 ,22 ,23 ,25 ,26 ,27 ,31 ,34 ,38 ,0  ,1  ,4  ,5  ,7  ,8  ,9  ,10 ,12 ,
13 ,15 ,19 ,21 ,22 ,24 ,25 ,26 ,0  ,3  ,4  ,6  ,7  ,8  ,9  ,12 ,18 ,21 ,24 ,25 ,
28 ,29 ,33 ,37 ,41 ,2  ,3  ,6  ,23 ,24 ,27 ,28 ,32 ,36 ,40 ,41 ,45 ,47 ,49 ,50 ,
52 ,56 ,2  ,7  ,11 ,14 ,17 ,22 ,23 ,26 ,27 ,35 ,39 ,40 ,44 ,45 ,46 ,47 ,49 ,1  ,
5  ,6  ,7  ,10 ,11 ,13 ,16 ,20 ,21 ,22 ,23 ,25 ,26 ,27 ,31 ,34 ,0  ,1  ,4  ,5  ,
6  ,8  ,9  ,10 ,12 ,15 ,19 ,21 ,22 ,24 ,25 ,26 ,28 ,0  ,3  ,4  ,8  ,9  ,18 ,21 ,
24 ,25 ,29 ,33 ,36 ,37 ,41 ,42 ,44 ,50




            
},j,k;                        
        
     for(k=0;k<10;k++)
    {
    for(j=0;j<17;j++)   //所有条件赋值行为简化为一个循环解决   

            mn1[j-2][0]=c[i[k][j]]-c[i[k][j-1]]-c[i[k][j-2]];
            
            mn1[j-2][1]=i[k][j]-i[k][j-1]-i[k][j-2];   
        
        
    qsort(mn1, sizeof(mn1)/sizeof(int )/2, 2*sizeof(int ),commpC);               
        
    for(j = 0; j < sizeof(mn1)/sizeof(int )/2; j++)                    
    {        
         printf("%d", mn1[0][0]);    printf("%d", mn1[0][1]);           
    }    printf("\n");                     
}   
}

搜索更多相关主题的帖子: include return 
2017-02-20 11:59
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:60 
int commpC(const void *a, const void *b)                   //二维数组排序
{               
    return (( int *)b)[0] > ((int *)a)[0] ? 1 : -1;                 
}

for(j=2;j<17;j++)   //所有条件赋值行为简化为一个循环解决               //j的范围,  int mn1[15][2]

            mn1[j-2][0]=c[i[k][j]]-c[i[k][j-1]]-c[i[k][j-2]];
            
            mn1[j-2][1]=i[k][j]-i[k][j-1]-i[k][j-2];   

早知做人那么辛苦!  当初不应该下凡
2017-02-20 13:20
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 2楼 炎天
感谢指教!程序可以运行了!虽然二维数组赋值遇到问题,但是二维数组[0][0]和[0][1]分别循环赋值后,问题有解了!
感谢指教!现在可以用程序给二维数组排序了,原来是人工输出寻找最大值最小值,眼睛都看模糊了!


#include<stdio.h>               
#include<stdlib.h>               
 int commpC(const void *a, const void *b)                   //二维数组排序
{               
    return (( int *)b)[0] > ((int *)a)[0] ? 1 : -1;                 
}         
main()              
{      
    int mn1[15][2];
   

  int c[83]={1  ,2  ,4  ,5  ,6  ,7  ,10 ,11 ,14 ,19 ,20 ,21 ,24 ,25 ,26 ,29 ,30 ,31 ,33 ,34 ,
35 ,43 ,44 ,45 ,47 ,48 ,49 ,50 ,52 ,56 ,57 ,58 ,60 ,61 ,63 ,64 ,65 ,71 ,72 ,73 ,
74 ,75 ,76 ,77 ,78 ,82 ,86 ,87 ,90 ,92 ,93 ,94 ,97 ,100,101,105,107,108,109,110,
111,114,115,116,118,119,121,122,124,125,127,129,130,131,132,133,134,135,136,138,
139,143,148

},                        
                    
        i[10][17]={2  ,3  ,6  ,8  ,23 ,24 ,27 ,28 ,29 ,30 ,32 ,36 ,40 ,41 ,47 ,49 ,50 ,2  ,8  ,11 ,
14 ,17 ,22 ,23 ,26 ,27 ,29 ,35 ,39 ,40 ,44 ,46 ,47 ,49 ,1  ,5  ,10 ,11 ,13 ,14 ,
16 ,20 ,21 ,22 ,23 ,25 ,26 ,27 ,31 ,34 ,38 ,0  ,1  ,4  ,5  ,7  ,8  ,9  ,10 ,12 ,
13 ,15 ,19 ,21 ,22 ,24 ,25 ,26 ,0  ,3  ,4  ,6  ,7  ,8  ,9  ,12 ,18 ,21 ,24 ,25 ,
28 ,29 ,33 ,37 ,41 ,2  ,3  ,6  ,23 ,24 ,27 ,28 ,32 ,36 ,40 ,41 ,45 ,47 ,49 ,50 ,
52 ,56 ,2  ,7  ,11 ,14 ,17 ,22 ,23 ,26 ,27 ,35 ,39 ,40 ,44 ,45 ,46 ,47 ,49 ,1  ,
5  ,6  ,7  ,10 ,11 ,13 ,16 ,20 ,21 ,22 ,23 ,25 ,26 ,27 ,31 ,34 ,0  ,1  ,4  ,5  ,
6  ,8  ,9  ,10 ,12 ,15 ,19 ,21 ,22 ,24 ,25 ,26 ,28 ,0  ,3  ,4  ,8  ,9  ,18 ,21 ,
24 ,25 ,29 ,33 ,36 ,37 ,41 ,42 ,44 ,50




            
},j,k;                        
        
     for(k=0;k<10;k++)
    {
    for(j=2;j<17;j++)
    {//所有条件赋值行为简化为一个循环解决   

            mn1[j-2][0]=c[i[k][j]]-c[i[k][j-1]]-c[i[k][j-2]];
    }
            for(j=0;j<17;j++)
            {
                mn1[j-2][1]=i[k][j]-i[k][j-1]-i[k][j-2];  
            }
        
        
    qsort(mn1, sizeof(mn1)/sizeof(int )/2, 2*sizeof(int ),commpC);               
        
    for(j = 0; j < sizeof(mn1)/sizeof(int )/2; j++)                    
    {  
    }
         printf("%d   ", mn1[0][0]);   printf("%d  \n", mn1[0][1]);
         printf("%d   ", mn1[1][0]);   printf("%d  \n", mn1[1][1]);           
                        
}   
}

2017-02-20 21:14
快速回复:二维数组循环赋值 ,怎么用qsort排序?
数据加载中...
 
   



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

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