前言

这个冒泡排序通用版是各种类型的数据都可以进行排序
是参考 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语言冒泡排序(通用版)相关推荐

  1. 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统

    简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持.bug修复和安全 ...

  2. qq2009java触屏_MTK手机QQjava版 山寨机qq2009通用版

    MTK手机QQjava版 山寨机qq2009通用版 为了满足国产手机用户对正版手机QQ的迫切需求,腾讯于2010年6月发布了,该版本全面内置手机QQ浏览器.支持网址导航.支持丰富手机QQ菜单设置等等, ...

  3. oracle数据库led显示屏,LED导航者通用版(led显示屏控制软件) V3.1 最新官方安装版...

    LED导航者通用版(led显示屏控制软件)是一款主要用于led显示屏控制系统的管理软件.提供特有的智能设置和专业配置,助您快速点亮显示屏;软件集节目制作.预览.发送.管理等多种功能为一体.软件操作简单 ...

  4. 维克设备管理软件 v2.15 通用版 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  5. 词云中去重复的词_【需要拿去】毕业论文结束语、致谢词(通用版)

    [第1篇]毕业论文结束语.致谢词(通用版) 毕业论文的结束意味着我在xx院校区的学习生活即将画上句号!回首往事,心潮难平,感慨良多,但无论如何这些实实在在的经历,是我人生中弥足珍贵的记忆.在此,要特别 ...

  6. 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...

  7. M通用版代码规范 - 持续更新

    文章目录 M通用版代码规范 - 持续更新 变量 方法 类 锁 事务 陷阱 格式 空行 注释 M通用版代码规范 - 持续更新 变量 代码中的命名均不能$.#等特殊符号开始或结束,因为$.#等是系统方法. ...

  8. 维克客户管理软件 v1.26 通用版 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  9. 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc

    大掌柜软件通用版操作说明 PAGE PAGE 157 系统应用基础 内容提要: 大掌柜软件专业版对系统的要求 数据库SQL server2000的安装 大掌柜软件专业版服务器端与客户端的安装 加密狗的 ...

  10. c语言冒泡排序(解析)

    c语言冒泡排序(解析) 运行结果:

最新文章

  1. 【云栖号案例 | 教育与科研机构】科研机构上云提供更加精准分析检测服务
  2. windows定时任务
  3. 【转】几种数据库的大数据批量插入
  4. php echo 大括号,PHP中echo输出中存在括号()的处理
  5. C++自学13:位运算(std::bitset)
  6. 【Java】课程设计—学生在线考试系统
  7. vue项目设置footer始终处于页面底部
  8. STM32连接WIFI-ESP8266获取天气信息---STA模式运用
  9. 第二章 03 藤蔓生长
  10. win10系统 oracle11g的安装流程
  11. requireJS define require
  12. children和childNodes 的区别
  13. 如何设计一个积分领取系统
  14. nodejs实现微信小程序支付功能及相关问题总结
  15. 电磁场与仿真软件(32)
  16. 如何将计算机技术应用于电梯上,浅谈计算机信息管理在电梯技术中的应用
  17. 盈利之外,世纪佳缘哪些变化值得关注?
  18. SpringBoot HATEOAS用法简介
  19. 基于ACCESS在线考试自动组卷系统设计
  20. 埙,感受太古遗音[Teaks]

热门文章

  1. 51单片机8位流水灯左移实现(比较简短)
  2. 51单片机数值存储c语言教程,单片机c语言教程:C51变量
  3. python音乐推荐系统的设计与实现_基于协同过滤的音乐推荐系统
  4. 基于jsp+servlet的 新闻管理系统。
  5. Linux通过UUID挂载和卸载硬盘
  6. 台式计算机读取不了移动硬盘,电脑识别不了硬盘的原因
  7. 关于winpcap发包速度低的问题
  8. 头歌c语言答案循环结构,C语言的“汤头歌”
  9. 深入浅出设计模式之状态模式、代理模式
  10. 锐起无盘系统菜鸟教程