news 2026/9/25 11:18:34

算法 C语言 冒泡排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法 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)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 8:32:43

LobeChat转化率优化建议

LobeChat 转化率优化建议 在大语言模型&#xff08;LLM&#xff09;技术迅速普及的今天&#xff0c;用户早已不再满足于“能用”的AI工具——他们需要的是真正好用、顺手、值得长期依赖的智能助手。一个再强大的模型&#xff0c;如果交互界面笨拙、响应迟缓或功能单一&#xff…

作者头像 李华
网站建设 2026/9/24 8:32:32

LobeChat技术创新路线图生成

LobeChat&#xff1a;构建可扩展AI交互平台的技术实践 在大语言模型&#xff08;LLM&#xff09;能力飞速演进的今天&#xff0c;一个关键问题逐渐浮现&#xff1a;如何让强大的AI真正“可用”&#xff1f;不是仅限于研究实验室或闭源API调用&#xff0c;而是能被开发者自由定…

作者头像 李华
网站建设 2026/9/25 9:02:38

BetterNCM插件管理器完整指南:从零配置到高阶应用

BetterNCM插件管理器完整指南&#xff1a;从零配置到高阶应用 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM作为网易云音乐的强大插件扩展平台&#xff0c;能够彻底改变你的…

作者头像 李华
网站建设 2026/9/25 2:01:15

LobeChat + GPU算力组合推荐:高效运行开源大模型的最佳实践

LobeChat GPU算力组合推荐&#xff1a;高效运行开源大模型的最佳实践 在生成式AI快速渗透各行各业的今天&#xff0c;越来越多团队开始尝试将大语言模型&#xff08;LLM&#xff09;部署到本地环境。然而&#xff0c;使用云端闭源API虽然便捷&#xff0c;却面临数据隐私泄露、…

作者头像 李华
网站建设 2026/9/25 7:47:01

Shutter Encoder终极视频转换工具:从入门到精通的完整使用手册

Shutter Encoder终极视频转换工具&#xff1a;从入门到精通的完整使用手册 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder 还在为…

作者头像 李华
网站建设 2026/9/24 8:31:47

Tomcat11和jdk17版本在IDEA2023中的控制台乱码问题解决

基础环境&#xff0c;Tomcat11&#xff0c;jdk17&#xff0c;idea2023。问题描述&#xff1a;查询出的数据库内容在控制台可以正常展示&#xff0c;但是在代码中输出调试的语句是乱码。第一步&#xff1a;找到上方菜单的help&#xff0c;edit...点击后在页面最下方添加代码-Dfi…

作者头像 李华