使用qsort对二维int型数组排序

1.对二维int数组排序 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int cmp(const void*a,const void*b){
int *c=(int *)a;
int *d=(int *)b;
if(*c!=*d) return *c-*d;          //此为升序排列  
else return *(c+1)-*(d+1);   //降序改为  *(d+1)-*(c+1); 
}
int main(){
srand((int)time(0));
int num[10][2];
for(int i=0;i<10;i++){
for(int j=0;j<2;j++){
num[i][j]=rand()%10;
}
}//产生随机int型数组
qsort(num,10,8,cmp); 
for(int i=0;i<10;i++)
printf("%d %d\n",num[i][0],num[i][1]); 

}

 

2.对字符型数组排序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int cmp(const void*a,const void*b);
char str[6][10]={"adfdea","sdfae","dsfee","defeta","egrhad","rgsrh"};
qsort(str,6,sizeof(str[0]),cmp);
for(int i=0;i<6;i++) puts(str[i]);

int cmp(const void*a,const void*b){
return strcmp((char*)a,(char*)b);
}

猜你喜欢

转载自blog.csdn.net/coderdogg/article/details/74781823