快速排序函数的比较函数
来源:互联网 发布:windows更新消失 编辑:程序博客网 时间:2024/05/16 17:59
快速排序函数函数原型:
void qsort(void *base, size_t num, size_t width, int(*compare)(const void *num1, const void *num2));
参数:1、待排序的数组的首地址
2、数组中待排序元素的个数
3、各元素占用空间的大小
4、指向比较函数的指针,用于确定排序的顺序
compare函数的原型:int compare(const void *elem1,const void *elem2)
compare函数的返回值描述小于0elem1将排在elem2的前面等于0elem1等于elem2大于0elem1将排在elem2的后面1、整形数组的比较函数:
/*整形数组比较函数*/int IntCmp(const void *a, const void *b){return (*(int *)a > *(int *)b) ? 1 : -1;}
2、浮点型数组比较函数
/*浮点型数组比较函数*/int DoubleCmp(const void *a, const void *b){return ((*(double *)a - *(double *)b)>0) ? 1 : -1;}
3、字符型数组比较函数
/*字符型数组比较函数*/int CharCmp(const void *a, const void *b){return (*(char *)a > *(char *)b) ? 1 : -1;}
4、字符串数组比较函数
/*字符串数组比较函数*/int StrCmp(const void *str1, const void *str2){return (strcmp((char *)(*(int *)str1), (char *)(*(int *)str2)) > 0) ? 1 : -1;}
5、结构体类型比较函数,假设有以下结构体,并以学生成绩为依据对学生姓名按照成绩的一定顺续输出
#include <stdio.h>#include <stdlib.h>/*学生类型的结构体*/typedef struct Stu{char name[20];//学生姓名int sorce; //学生成绩}Stu;/*结构体类型比较函数*/int StcCmp(const void *stc1, const void *stc2){return ((*(Stu *)stc1).sorce > (*(Stu *)stc2).sorce) ? 1 : -1;}int main(){Stu stu[] = { { "lisi", 70 }, { "zhangsan", 35 }, { "wangwu", 50 } };qsort(stu, sizeof(stu) / sizeof(stu[0]), sizeof(stu[0]), StcCmp);for (int i = 0; i < sizeof(stu) / sizeof(stu[0]); i++){printf("%s\n", stu[i].name);}system("pause");return 0;}
结构体类型排序运行结果:
0 0
- 快速排序函数的比较函数
- [编程珠玑读书笔记]最好的快速排序与库函数中的排序函数比较
- 快速排序 排序函数的个人小结
- 快速排序模板方法,只实现了int比较的仿函数
- 排序比较函数
- java快速排序函数
- 快速排序函数声明
- 快速排序--qsotr()函数
- 快速排序函数
- 快速排序函数模板
- 快速排序算法函数
- 快速排序函数qsort
- 快速排序函数模块
- sort函数 快速排序
- qsort快速排序函数
- 排序算法中比较函数的运用
- php自带排序函数sort()和用自己用php实现的快速排序算法,速度比较。
- 用JAVA写的快速排序函数。
- 全局变量 静态变量 局部变量分析
- 单链表的各种操作
- 替换字符串中的空格
- 一组数中,只有两个数只出现了奇数次,其他所有数都是成对出现的,请找出那两个数
- 冒泡排序函数,可以给任意类型的数据排序,比如整形数组,字符数组,字符串数组等
- 快速排序函数的比较函数
- 网卡驱动程序设计---网络子系统深入分析以及DM9000网卡驱动实现
- 二叉树 的先序 中序、后序遍历、层次遍历以及树状打印等操作
- C语言利用结构体实现一个通讯录
- C语言的注释与C++注释的转换
- 两个链表的合并
- 单链表的操作
- 单继承与多继承中的虚函数表和虚函数指针
- Hyper-V Server故障转移群集安装