用sort 函数,要加头文件
用qsort函数,要加头文件
int型:
sort函数:
int cmp(int a,int b)
{
return a>b;//(从大到小)return a
}
qsort函数:
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;//(从大到小)return *(int *)b-*(int *)a;(从小到大)
}
double 型:
sort函数:
int cmp(double a,double b)
{
if(a>b)return 1;//(从大到小)if(a
return -1;
}
qsort函数:
int cmp(const void *a,const void *b)
{
if(*(double *)a>*(double *)b)return 1;//(从大到小)if(*(double *)b>*(double *)a)return 1;(从小到大)
return -1;
}
char 型:
sort函数:
int cmp(char a,char b)
{
return a>b;//(从大到小)return a
}
qsort函数:
int cmp(const void *a,const void *b)
{
return *(char *)a>*(char *)b;//(从大到小)return *(char *)b>*(char *)a;(从小到大)
}
字符串型:
包含头文件
qsort函数:
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);//(从大到小)return strcmp((char *)b,(char *)a);(从小到大)因为字符串比较函数直接用的是地址,so。。。。
}
结构体型:
struct node
{
int a;
char b;
double t;
char s[101];
}stu[1001];
sort函数:
int cmp(node c,node d)
{
return c.a>d.a;//return c.a //return c.b>d.b;//return c.b //if((*(node *)c).t>(*(node *)d).t)return 1;return 0; //return strcmp(c.s,d.s);//return strcmp(d.s,c.s); //if(c.a==d.a)return c.b } int cmp(const void *c,const void *d) { //return (*(node *)c).b-(*(node *)d).b;//return (*(node *)c).b>(*(node *)d).b; //if((*(node *)c).t>(*(node *)d).t)return 1;return 0; //return strcmp((*(node *)c).str,(*(node *)d).str)//return strcmp((*(node *)c).str,(*(node *)d).str); //if((*(node *)c).a==(*(node *)d).a) return (*(node *)c).b>(*(node *)d).b; } 调用时sort函数有三个参数例如数组a:sort(a,a+n,cmp);//n为排序的长度 调用qsort函数时有四个参数例如数组a:qsort(a,n,sizeof(a),cmp);//n为排序长度,sizeof()求所占内存的吧
qsort函数:
return (*(node *)c).a-(*(node *)d).a;//return (*(node *)c).a>(*(node *)d).a;