冒泡排序详解
算法思想
1)两两相邻的元素进行比较;
升序排列:若前面元素大于后面元素就交换两个元素的位置,最终结果是最大的一个元素移动到了最后的位置;
降序排列:若前面元素小于后面元素就交换两个元素的位置,最终结果是最小的一个元素移动到了最后的位置。
2)如果有 n 个元素那么【冒泡操作】重复 n-1 趟排序即可排序完成。
算法图解
1. 一共两层 for 循环
2. 第一层for循环是控制进行几趟冒泡的,所以循环的次数的是待排序序列元素个数减一次。
3.第二层for循环是控制每一趟冒泡两两元素间进行比较的,相邻两元素比较,若反序则交换。
注意:j从0到n-1,j+1从1到n这个地方我第一次忽略-1,即j从0到n,那么j+1就会超过了排序序列的最大长度。
代码实践
#include <stdio.h> int main() { int arr[10]; printf("请输入10个数据:"); for (int i = 0; i < 10; ++i) { scanf("%d", &arr[i]); } int temp; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10 - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } printf("升序输出数组:"); for (int i = 0; i < 10; ++i) { printf("%d ", arr[i]); } return 0; }
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器