二维数组循环赋值 ,怎么用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");
}
}