当前位置: 首页 > news >正文

算法 C语言 冒泡排序

目录

一、冒泡排序思想

二、冒泡排序代码

三、冒泡排序时间复杂度与空间复杂度

1. 时间复杂度分析

2. 空间复杂度分析


一、冒泡排序思想

冒泡排序的核⼼思想就是:两两相邻的元素进⾏⽐较,元素 小 / 大 就交换,然后进行下一个两两相邻的元素进⾏⽐较,重复以上动作,直到 升序 / 降序。


二、冒泡排序代码

#include<stdio.h> void bubble_sort(int* arr, int sz) { int i = 0; for (i = 0; i < sz - 1; i++) { int j = 0; int flag = 1; for (j = 0; j < sz - 1 - i; j++) { if (arr[j] > arr[j+1]) { int tmp = 0; tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = 0; } } if (flag) { break; } } } int main() { int arr[] = { 10,9,8,7,6,5,4,3,2,1 }; int sz = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, sz); for (int i = 0; i < sz; i++) { printf("%d ", arr[i]); } return 0; }

进行升序排序,如图:


三、冒泡排序时间复杂度与空间复杂度

1. 时间复杂度分析

冒泡排序的核心操作是比较交换。我们通过嵌套循环来实现:

外层循环:控制排序的“轮数”。对于 n 个元素,最多需要 n-1 轮才能确保完全有序。

内层循环:在每一轮中,对未排序部分的相邻元素进行两两比较,并根据需要交换位置。

时间复杂度我们只讨论最坏情况:

当需要排序成升序的数组完全是逆序的时,每一轮都需要进行最大次数的比较和交换。

比较次数 =(n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2

交换次数同样约为n(n-1)/2

因此,总操作次数与 n² 成正比,时间复杂度为O(n²)

2. 空间复杂度分析

冒泡排序的整个排序过程只在原数组内部进行。除了使用几个固定的临时变量(如用于交换的tmp、循环计数器i, j、判断是否已经 升序 / 降序 的flag)外,不需要申请额外的、与数据规模 n 相关的存储空间。

所以无论数组有多大,这些临时变量的数量都是固定的。因此,冒泡排序的空间复杂度为O(1)

http://www.cnnetsun.cn/news/97444.html

相关文章:

  • 基于微信小程序的校园工会体育报名系统计算机毕业设计(源码+lw+部署文档+讲解等)
  • AppleRa1n:iOS激活锁绕过的终极解决方案指南
  • RTL8852BE驱动:Linux无线网络兼容性问题的完整解决方案指南
  • 如何彻底解决Windows 11安装蓝屏:MediaCreationTool.bat驱动兼容性完全指南
  • 最新软件测试面试题,常见面试题及答案汇总,不怕拿不到offer
  • Obsidian样式定制完全指南:从入门到精通的主题个性化技巧
  • LobeChat私域流量转化文案
  • Leakcanary检测内存泄漏汇总
  • LobeChat主持人串场词生成
  • 解锁全球付费内容:Bypass Paywalls Clean完全指南
  • 14、Linux 文件搜索:grep 与 find 命令全解析
  • 18、Linux系统:磁盘使用查询与软件安装管理指南
  • WebPlotDigitizer图表数据提取:3步实现科研图像到精准数据的完整指南
  • 【毕业设计】SpringBoot+Vue+MySQL 高校宣讲会管理系统平台源码+数据库+论文+部署文档
  • 如何彻底解决AutoCAD字体问题:终极字体管理插件使用指南
  • 3、量子世界的奥秘:从狄拉克到多世界诠释
  • 17、量子随机数、超密编码与量子隐形传态
  • 构建虚拟偶像配音系统?试试这款多情感TTS引擎EmotiVoice
  • LobeChat主题皮肤更换教程:打造个性化的AI聊天界面
  • 企业级工资信息管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 悼词缅怀亲人:LobeChat传递真挚情感
  • LobeChat PCI-DSS支付安全建议
  • Obsidian Style Settings:终极自定义指南,轻松打造个性化笔记界面
  • 解锁 AI 潜力:9 大核心提示技巧,让交互更精准高效
  • zotero-style终极指南:5分钟打造智能文献管理神器
  • BetterNCM安装工具:3分钟快速上手网易云音乐插件终极指南
  • 思科DHCP服务1
  • 解锁Ryzen处理器性能的5大核心调试技术
  • LobeChat限时促销活动文案生成
  • LobeChat指标监控告警设置