首页 > 代码库 > qsort函数辅助函数compare函数的编写
qsort函数辅助函数compare函数的编写
qsort的第四个参数,辅助函数compare的关于不同排序对象的不同写法:
一、对int类型数组排序
int num[100]; int compare(const void *a, const void *b) { return *(int *)a - *(int *)b; }
二、对char类型数组排序(同int类型)
char word[100]; int compare(const void *a, const void *b) { return *(char *)a - *(int *)b; }
三、对double类型数组排序
double array[100]; int compare(const void *a, const void *b) { return *(double *)a > *(double *)b ? 1 : -1; }
注意qsort第三个参数是sizeof(array[0])。
四、对结构体一级排序
typedef struct node { double data; int other; }Node; array[100]; int compare(const void *a, const void *b) { return ((Node *)a)->data > ((Node *)b)->data ? 1 : -1; }
五、对结构体二级排序
typedef struct node { int x; int y; }Node; Node array[100]; //按照x从小到大排序,当x相等时按照y从大到小排序 int compare(const void *a, const void *b) { Node *p1 = (Node *)a; Node *p2 = (Node *)b; if (p1->x != p2->x) return p1->x - p2->x; else return p1->y - p2->y; }
六、对字符串进行排序
typedef struct node { int other; char string[100]; }Node; Node array[100]; //按照结构体中字符串string的字典顺序排序 int compare(const void * a, const void * b) { return strcmp(((Node *)a)->string, ((Node *)b)->string);
qsort函数辅助函数compare函数的编写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。