1 #include2 #include 3 #include 4 5 struct Struction 6 { 7 double one; 8 int another; 9 }; 10 11 int CmpInt_1(const void *a,const void *b) 12 { 13 return *(int*)a - *(int*)b; 14 } 15 16 int CmpInt_2(const void *a,const void *b) 17 { 18 int *c = (int *)a; 19 int *d = (int *)b; 20 21 if(*(c+0) != *(d+0)) 22 { 23 return *(c+0) - *(d+0); 24 } 25 else 26 { 27 return *(c+1) - *(d+1); 28 } 29 } 30 31 int CmpStruction(const void *a,const void *b) 32 { 33 struct Struction *c = (struct Struction *)a; 34 struct Struction *d = (struct Struction *)b; 35 36 if(c->one != d->one) 37 { 38 return c->one > d-> one ? 1 : 0; 39 } 40 else 41 { 42 return c->another > d-> another ? 1 : 0; 43 } 44 } 45 46 int CmpString(const void *a,const void *b) 47 { 48 return strcmp((char*)a,(char*)b); 49 } 50 51 int main() 52 { 53 int i,j; 54 55 //sort int* 56 int TestArray_1[10] = { 718,224,3332,4443,55,31,66,79,90,7}; 57 qsort(TestArray_1,10,sizeof(int),CmpInt_1); 58 59 for(i = 0; i < 10; i ++) 60 { 61 printf("%d ",TestArray_1[i]); 62 } 63 printf("\n\n"); 64 65 66 //sort int** 67 int TestArray_2[5][2] = { { 0,1},{ 2,7},{-4,99},{ 1,900},{ 2,423}}; 68 qsort(TestArray_2,5,sizeof(TestArray_2[0]),CmpInt_2); 69 70 for(i = 0; i < 5; i ++) 71 { 72 for(j = 0; j < 2; j ++) 73 { 74 printf("%d ",TestArray_2[i][j]); 75 } 76 printf("\n"); 77 } 78 printf("\n\n"); 79 80 //sort struct with two variable 81 struct Struction *TestArray_3 = malloc(5*sizeof(struct Struction)); 82 TestArray_3[0].one = 1.1; 83 TestArray_3[0].another = 18; 84 TestArray_3[1].one = 43; 85 TestArray_3[1].another = -99; 86 TestArray_3[2].one = 1.1; 87 TestArray_3[2].another = 900; 88 TestArray_3[3].one = 3; 89 TestArray_3[3].another = 6; 90 TestArray_3[4].one = 2; 91 TestArray_3[4].another = 4; 92 93 qsort(TestArray_3,5,sizeof(struct Struction),CmpStruction); 94 for(i = 0; i < 5; i ++) 95 { 96 printf("%lf %d\n",TestArray_3[i].one,TestArray_3[i].another); 97 } 98 printf("\n\n"); 99 100 //sort string101 char TestArray_4[5][100];102 strcpy(TestArray_4[0],"Asurudo");103 strcpy(TestArray_4[1],"Lokianyu");104 strcpy(TestArray_4[2],"Hatsune");105 strcpy(TestArray_4[3],"Miku");106 strcpy(TestArray_4[4],"Aqours");107 108 qsort(TestArray_4,5,sizeof(TestArray_4[0]),CmpString);109 for(i = 0;i < 5;i ++)110 {111 puts(TestArray_4[i]);112 }113 114 return 0;115 }