C语言冒泡排序(通用版)
前言
这个冒泡排序通用版是各种类型的数据都可以进行排序
是参考 qsort
函数的排序思想,给冒泡排序进行优化
冒泡排序
这种是正常的冒泡排序,只能排序整形的数据
void bobble(int* str, int sz)
{int i = 0;int flag = 1;for (i = 0; i < sz - 1; i++){int j = 0;for (j = 0; j < sz - 1 - i; j++){if (str[j] > str[j + 1]){int tmp = str[j];str[j] = str[j + 1];str[j + 1] = tmp;a = 0;}if (flag == 1)//判断是否有序,有序就跳出{break;}}}
}int main()
{int arr[] = { 1,3,4,2,5,7,6,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);bobble(arr, sz);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
冒泡排序优化(通用版)
冒泡排序优化后可以排序各种类型的数据
参考的是 qsort
函数的快排思想,进行优化
int qsort_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}void Swap(char* p1, char* p2, int width)
{int i = 0;for (i = 0; i < width; i++){char tmp = *p1;*p1 = *p2;*p2 = tmp;p1++;p2++;}
}void my_qsort(void* base, int num, int width, int(*cmp)(const void*, const void*))//const void* e1
{int i = 0;for (i = 0; i < num - 1; i++){int j = 0;for (j = 0; j < num - 1 - i; j++){if ( (cmp((char*)base + j * width , (char*)base + (j + 1) * width)) > 0){Swap((char*)base + j * width, (char*)base + (j + 1) * width, width);}}}
}int main()
{int arr[] = { 1,3,4,2,5,7,6,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);my_qsort(arr, sz, sizeof(arr[0]), qsort_int);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
结束语
以上就是冒泡排序的优化过后的代码,相当于模拟实现qsort
函数,如果还没学过qsort
函数,看起来会很吃力
当然如果你有什么不懂的可以私信博主探讨一下
C语言冒泡排序(通用版)相关推荐
- 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统
简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持.bug修复和安全 ...
- qq2009java触屏_MTK手机QQjava版 山寨机qq2009通用版
MTK手机QQjava版 山寨机qq2009通用版 为了满足国产手机用户对正版手机QQ的迫切需求,腾讯于2010年6月发布了,该版本全面内置手机QQ浏览器.支持网址导航.支持丰富手机QQ菜单设置等等, ...
- oracle数据库led显示屏,LED导航者通用版(led显示屏控制软件) V3.1 最新官方安装版...
LED导航者通用版(led显示屏控制软件)是一款主要用于led显示屏控制系统的管理软件.提供特有的智能设置和专业配置,助您快速点亮显示屏;软件集节目制作.预览.发送.管理等多种功能为一体.软件操作简单 ...
- 维克设备管理软件 v2.15 通用版 免费
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 词云中去重复的词_【需要拿去】毕业论文结束语、致谢词(通用版)
[第1篇]毕业论文结束语.致谢词(通用版) 毕业论文的结束意味着我在xx院校区的学习生活即将画上句号!回首往事,心潮难平,感慨良多,但无论如何这些实实在在的经历,是我人生中弥足珍贵的记忆.在此,要特别 ...
- 【C语言冒泡排序、选择排序和快速排序】
文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...
- M通用版代码规范 - 持续更新
文章目录 M通用版代码规范 - 持续更新 变量 方法 类 锁 事务 陷阱 格式 空行 注释 M通用版代码规范 - 持续更新 变量 代码中的命名均不能$.#等特殊符号开始或结束,因为$.#等是系统方法. ...
- 维克客户管理软件 v1.26 通用版 免费
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc
大掌柜软件通用版操作说明 PAGE PAGE 157 系统应用基础 内容提要: 大掌柜软件专业版对系统的要求 数据库SQL server2000的安装 大掌柜软件专业版服务器端与客户端的安装 加密狗的 ...
- c语言冒泡排序(解析)
c语言冒泡排序(解析) 运行结果:
最新文章
- 【云栖号案例 | 教育与科研机构】科研机构上云提供更加精准分析检测服务
- windows定时任务
- 【转】几种数据库的大数据批量插入
- php echo 大括号,PHP中echo输出中存在括号()的处理
- C++自学13:位运算(std::bitset)
- 【Java】课程设计—学生在线考试系统
- vue项目设置footer始终处于页面底部
- STM32连接WIFI-ESP8266获取天气信息---STA模式运用
- 第二章 03 藤蔓生长
- win10系统 oracle11g的安装流程
- requireJS define require
- children和childNodes 的区别
- 如何设计一个积分领取系统
- nodejs实现微信小程序支付功能及相关问题总结
- 电磁场与仿真软件(32)
- 如何将计算机技术应用于电梯上,浅谈计算机信息管理在电梯技术中的应用
- 盈利之外,世纪佳缘哪些变化值得关注?
- SpringBoot HATEOAS用法简介
- 基于ACCESS在线考试自动组卷系统设计
- 埙,感受太古遗音[Teaks]