您的位置:首页 > 其它

sort

2015-07-27 00:22 357 查看
用sort 函数,要加头文件<algorithm>以及using namespace std;另外文件的后缀要改为.cpp

用qsort函数,要加头文件<stdlib>这个是c里的,文件的后缀可以是.c

int型:

sort函数:

int cmp(int a,int b)

{

return a>b;//(从大到小)return a<b;(从小到大)

}

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<b)return 1;(从小到大)

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<b;(从小到大)

}

qsort函数:

int cmp(const void *a,const void *b)

{

return *(char *)a>*(char *)b;//(从大到小)return *(char *)b>*(char *)a;(从小到大)

}

字符串型:

包含头文件<string.h>

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<d.a;

//return c.b>d.b;//return c.b<d.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<d.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()求所占内存的吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: