【冒泡排序】详解以及优化
目录一、冒泡排序的核心思想二、代码演示1.常规思路2.优化版本减少了非必要排序3.利用冒泡原理模拟qsort函数一、冒泡排序的核心思想两两相邻的元素进行比较。形象化理解每一趟冒泡排序就像水底冒泡泡一样将要排序的数字逐对逐对比较从底部移动到顶端可结合下图进行体会。注①若有n个数字,则进行n-1趟冒泡排序②每一趟排序若未排的数字为n则需进行n-1对数字比较③冒泡排序局限;一般只用来排序整型数据④两个整型元素可以直接使用或比较但是两个字符串、两个结构体元素是不能使用或比较的。字符串可以使用strcmp函数比较二、代码演示1.常规思路void bubble_sort(int arr[], int sz)//参数接收数组元素个数 { for(int i 0; i sz-1; i) { for(int j 0; jsz-i-1; j) { if(arr[j] arr[j1]) { int tmp arr[j]; arr[j] arr[j1]; arr[j1] tmp; } } } } int main() { int arr[] {3,1,7,5,8,9,0,2,4,6}; int sz sizeof(arr)/sizeof(arr[0]); bubble_sort(arr, sz); for(i0; isz; i) { printf(%d , arr[i]); } return 0; }2.优化版本减少了非必要排序void bubble_sort(int arr[], int sz)//参数接收数组元素个数 { for(int i 0; isz-1; i) { int flag 1;//假设这⼀趟已经有序了 for(int j 0; j sz-i-1; j) { if(arr[j] arr[j1]) { flag 0;//发⽣交换就说明⽆序 int tmp arr[j]; arr[j] arr[j1]; arr[j1] tmp; } } if(flag 1) break; //这⼀趟没交换就说明已经有序后续⽆序排序 } } int main() { int arr[] {3,1,7,5,8,9,0,2,4,6}; int sz sizeof(arr)/sizeof(arr[0]); bubble_sort(arr, sz); for(i0; isz; i) { printf(%d , arr[i]); } return 0; }3.利用冒泡原理模拟qsort函数此时不再有数据类型的限制#includestdio.h int my_cmp(const void* p1, const void* p2)//冒泡交换的判断条件 { return (*(int*)p1 - *(int*)p2);//*p1*p2则返回大于0的数字以此类推 } void exch(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 my_qsort(void* base, int num, int width, int (*cmp)(void*, void*))//模拟的qsort函数利用函数指针间接利用判断函数 { 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)//判断 { exch((char*)base j * width, (char*)base (j 1) * width, width);//排序 } } } } int main() { int arr[] { 0,7,6,4,3,5,9,8,2 }; int i 0; my_qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), my_cmp); for (i 0; i sizeof(arr) / sizeof(arr[0]); i) { printf(%d , arr[i]); } printf(\n); return 0; }这种方式的灵活性在于引入了函数指针只需要按需要排序的数据类型选择合适的比较判定函数再将其传给函数指针利用函数指针来调用即可。感谢阅读本文如有错漏之处烦请各位斧正。

相关新闻

量化模型如何平衡效率与精度?Ling-3.0-flash-fp4的FP4/INT4量化技术实践

量化模型如何平衡效率与精度?Ling-3.0-flash-fp4的FP4/INT4量化技术实践

量化模型如何平衡效率与精度?Ling-3.0-flash-fp4的FP4/INT4量化技术实践 【免费下载链接】Ling-3.0-flash-fp4 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ling-3.0-flash-fp4 在AI模型部署中,如何在保持高精度的同时显著提升运行…

2026/8/9 2:55:52 阅读更多 →
InfinityStar常见问题解答:解决训练与推理中的10大技术难题

InfinityStar常见问题解答:解决训练与推理中的10大技术难题

InfinityStar常见问题解答:解决训练与推理中的10大技术难题 【免费下载链接】InfinityStar [NeurIPS 2025 Oral]Infinity⭐️: Unified Spacetime AutoRegressive Modeling for Visual Generation 项目地址: https://gitcode.com/gh_mirrors/in/InfinityStar …

2026/8/9 2:55:52 阅读更多 →
如何用AI求职系统career-ops重新定义你的职业搜索:从手动筛选到智能匹配的完整指南

如何用AI求职系统career-ops重新定义你的职业搜索:从手动筛选到智能匹配的完整指南

如何用AI求职系统career-ops重新定义你的职业搜索:从手动筛选到智能匹配的完整指南 【免费下载链接】career-ops Open-source AI job search: scan job portals, evaluate listings with a structured A-F rubric into a 1.0-5.0 score, tailor your CV, track appl…

2026/8/9 0:10:43 阅读更多 →

最新新闻

KMS_VL_ALL_AIO终极指南:3分钟免费激活Windows和Office全系列

KMS_VL_ALL_AIO终极指南:3分钟免费激活Windows和Office全系列

KMS_VL_ALL_AIO终极指南:3分钟免费激活Windows和Office全系列 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活烦恼吗?Office突然变成只读模式影响工…

2026/8/9 6:23:53 阅读更多 →
2026版Android Studio安装与配置全指南

2026版Android Studio安装与配置全指南

1. 2026版Android Studio安装全流程解析作为Google官方推荐的Android开发IDE,Android Studio每年都会推出重大版本更新。2026版在构建速度、内存管理和AI辅助编码方面有了显著提升,但新版本的安装配置流程也发生了一些变化。本文将基于最新稳定版&#x…

2026/8/9 6:23:53 阅读更多 →
VC++6.0文件打开闪退终极修复:filetool.dll原理与部署指南

VC++6.0文件打开闪退终极修复:filetool.dll原理与部署指南

1. 项目概述:一个老兵的“急救包”如果你还在用VC6.0,那你大概率和我一样,是个“老古董”项目的守护者,或者是在维护一些历史悠久的代码库。这个诞生于1998年的开发环境,在今天看来界面简陋、功能有限,但它…

2026/8/9 6:23:53 阅读更多 →
微软HTML战略转型:从PDC2005到现代Web生态

微软HTML战略转型:从PDC2005到现代Web生态

1. 微软PDC大会与HTML战略的历史转折点2005年微软专业开发者大会(PDC)上,时任IE平台架构师的Chris Wilson宣布了一个震惊业界的决定:微软将全面转向HTML、CSS和JavaScript作为Windows应用程序的开发基础。这个看似技术导向的决策,实际上彻底改…

2026/8/9 6:23:53 阅读更多 →
企业组织架构如何优化?经营降本提效实操策略

企业组织架构如何优化?经营降本提效实操策略

组织架构是企业管理的骨架,骨架不顺,全盘皆乱。很多中小民企的组织架构都是初创期自然形成,没有经过专业化、系统化设计,完全适配初创小团队模式,却无法支撑企业规模化发展。多数企业发展到一定阶段后,架构…

2026/8/9 6:23:53 阅读更多 →
Python实现CNN图像识别:从原理到工业应用

Python实现CNN图像识别:从原理到工业应用

1. 项目概述:当Python遇上CNN图像识别去年帮朋友做一个垃圾分类小程序时,我第一次真正体会到CNN的强大——原本需要人工标注上千张图片的工作,用卷积神经网络三小时就达到了85%的准确率。这让我想起2012年AlexNet在ImageNet竞赛中一战成名的场…

2026/8/9 6:22:53 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →