用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
}
qsort函数:
int cmp(const void *c,const void *d)
{
return (*(node *)c).a-(*(node *)d).a;//return (*(node *)c).a>(*(node *)d).a;
//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()求所占内存的吧