<qsort实现一个通用的冒泡排序,排序各种类型的数据详解>
qsort排序各种类型的数据
- 1.代码
- 2.结果分析
qsort实现一个通用的冒泡排序,排序各种类型的数据详细说明,有整型,浮点型,字符型等。
1.代码
代码如下(示例):
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)int int_cmp(const void *p1, const void *p2)//整型
{return (*(int *)p1>*(int *)p2);
}int char_cmp(const void *x, const void *y) //字符型
{return (*(char *)x) - (*(char *)y);
}int str_cmp(const void *x, const void* y) //字符串型
{return strcmp(*(char **)x, *(char **)y);
}int double_cmp(const void *x, const void *y) //浮点型
{return (*(double*)x) - (*(double*)y);
}void _swap(void *p1, void *p2, int size){int i = 0;for (i = 0; i < size; i++){char tmp = *((char *)p1 + i);*((char *)p1 + i) = *((char *)p2 + i);*((char *)p2 + i) = tmp;}
}
void bubble(void *base, int count, int size, int(*cmp)(void *, void *)){int i = 0;int j = 0;for (i = 0; i < count - 1; i++){for (j = 0; j < count - i - 1; j++){if (int_cmp((char *)base + j*size, (char *)base + (j + 1)*size)>0){_swap((char *)base+j*size,(char *)base+(j+1)*size,size);}}}
}int main()
{int arr[] = {1,3,5,7,9,2,4,6,8,0};int i = 0;bubble(arr,sizeof(arr)/sizeof(arr[0]),sizeof(int),int_cmp);for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){printf("%d ",arr[i]);}printf("\n");char arr2[] = { 'a', 'b', 'g', 'q', 'Z', 'Y', 'X' };qsort(arr2, sizeof(arr2) / sizeof(arr2[0]), sizeof(arr2[0]), char_cmp);for (i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++){printf("%c ", arr2[i]);}printf("\n");char *arr3[] = { "abc", "teas", "FADE", "hui", "BLUE", "SIT" };qsort(arr3, sizeof(arr3) / sizeof(*arr3), sizeof(*arr3), str_cmp);for (i = 0; i < sizeof(arr3) / sizeof(*arr3); i++){printf("%s ", arr3[i]);}printf("\n");double arr4[] = { 2.61, 18.6, 40.2, 33.78, 26.15, 80.26, 5.20};qsort(arr4, sizeof(arr4) / sizeof(arr4[0]), sizeof(arr4[0]), double_cmp);for (i = 0; i < sizeof(arr4) / sizeof(arr4[0]); i++){printf("%.3f ", arr4[i]);}printf("\n");system("pause");return 0;
}
2.结果分析
结果如下:
<qsort实现一个通用的冒泡排序,排序各种类型的数据详解>相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- element 表格宽度自适应_Python如何以表格形式打印输出!
- Pagodas HDU - 5512
- activemq网络桥接_ActiveMQ –经纪人网络解释–第5部分
- Linux笔记-centos中大量tcp状态为TIME_WAIT
- HTTP Status 500 - Could not write content: Object is null 解决方法
- RocketMQ安装使用
- 数据产品经理面试提问集
- win10易升计算机丢失,微软Windows 10易升
- vim 命令模式下光标移动
- hutool对称加密
- 库存管理一般用什么软件比较好?
- CSS 用户登录图标与用户名样式
- SVG 研究之路 - 再談 defs
- win7适合oracle哪个版本下载,win7系统下载--Windows 7下成功安装ORACLE客户端
- 高校BBS最HOT的100个笑话(不看保证后悔终身)
- 摄影_焦点、对焦、对焦点
- 2020年第六届美亚杯个人资格赛题目复现
- 2019 让自己变的更加优秀(文末新年福利)
- 异构传感器定位论文概述
- 一篇文章看懂select_poll_epoll
热门文章
- 【Linux】循序渐进学运维-服务篇-rysnc原理
- 远距离WiFi传输模块,云望物联cv5200无线通信技术,WiFi信号远距离传输
- c语言数据结构逆波兰算法,[分享]表达式二叉树逆波兰式的转换程序源代码(C++)...
- CDS和ncRNA的分物种数据库
- 苹果股东大会:支持库克9900万美元薪酬方案
- Linux下YVU420转MP4工具下载,【图片】把视频转换成mp4格式的批处理工具_bandicam吧_百度贴吧...
- 60个适用于WordPress的最佳着陆页模板(2020)
- AU实战操作之混音、降噪
- PCIE AER Linux 驱动详解
- OSChina 周三乱弹 ——京中有善口技者