qsort函数

来源:互联网 发布:java返回值类型有哪些 编辑:程序博客网 时间:2024/06/06 10:50
关于qsort函数的用法 1)int数组排序  同char型数组相同 int cmp(const void *a, const void *b){//从小到大return *(int *)a - *(int *)b; //强制类型转换 }qsort(a, lenth, sizeof(a[0]),cmp)2)对double类型数组排序(特别要注意) double in[100]; int cmp( const void *a , const void *b ) { return *(double *)a > *(double *)b ? 1 : -1; } qsort(in,100,sizeof(in[0]),cmp); 3)对结构体一级排序 struct In { double data; int other; }s[100];//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写 int cmp( const void *a ,const void *b) { return (*(In *)a).data > (*(In *)b).data ? 1 : -1; } qsort(s,100,sizeof(s[0]),cmp);  4)对结构体二级排序 struct In { int x; int y; }s[100]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a , const void *b ) { In *c = (In *)a; In *d = (In *)b; if(c->x != d->x) return c->x - d->x; else return d->y - c->y; } 6)对字符串进行排序 struct In { int data; char str[100]; }s[100]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a , const void *b ) { return strcmp( (*(In *)a)->str , (*(In *)b)->str ); } qsort(s,100,sizeof(s[0]),cmp);  

0 0