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实现一个通用的冒泡排序,排序各种类型的数据详解>相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. element 表格宽度自适应_Python如何以表格形式打印输出!
  2. Pagodas HDU - 5512
  3. activemq网络桥接_ActiveMQ –经纪人网络解释–第5部分
  4. Linux笔记-centos中大量tcp状态为TIME_WAIT
  5. HTTP Status 500 - Could not write content: Object is null 解决方法
  6. RocketMQ安装使用
  7. 数据产品经理面试提问集
  8. win10易升计算机丢失,微软Windows 10易升
  9. vim 命令模式下光标移动
  10. hutool对称加密
  11. 库存管理一般用什么软件比较好?
  12. CSS 用户登录图标与用户名样式
  13. SVG 研究之路 - 再談 defs
  14. win7适合oracle哪个版本下载,win7系统下载--Windows 7下成功安装ORACLE客户端
  15. 高校BBS最HOT的100个笑话(不看保证后悔终身)
  16. 摄影_焦点、对焦、对焦点
  17. 2020年第六届美亚杯个人资格赛题目复现
  18. 2019 让自己变的更加优秀(文末新年福利)
  19. 异构传感器定位论文概述
  20. 一篇文章看懂select_poll_epoll

热门文章

  1. 【Linux】循序渐进学运维-服务篇-rysnc原理
  2. 远距离WiFi传输模块,云望物联cv5200无线通信技术,WiFi信号远距离传输
  3. c语言数据结构逆波兰算法,[分享]表达式二叉树逆波兰式的转换程序源代码(C++)...
  4. CDS和ncRNA的分物种数据库
  5. 苹果股东大会:支持库克9900万美元薪酬方案
  6. Linux下YVU420转MP4工具下载,【图片】把视频转换成mp4格式的批处理工具_bandicam吧_百度贴吧...
  7. 60个适用于WordPress的最佳着陆页模板(2020)
  8. AU实战操作之混音、降噪
  9. PCIE AER Linux 驱动详解
  10. OSChina 周三乱弹 ——京中有善口技者