冒泡法排序

冒泡排序:
===================================================================================
案例:
分析:
第一轮排序的代码:
1 #include <stdio.h> 2 3 void main(){ 4 int arr[] = {3,9,-1,10,-2}; 5 int temp = 0; 6 for (int i = 0; i < 4; i++){ 7 if (arr[i]>arr[i+1]){ 8 temp = arr[i]; 9 arr[i] = arr[i+1]; 10 arr[i+1] = temp; 11 } 12 } 13 14 }
第二轮排序的代码只需要再加一个相同的for循环,更改i<4中的值,把4改为3即可,如此重复步骤直到i<1即可完成要求。
也可以嵌套一个循环,一部到位,如下(看不懂先理解上面的核心【即只有数值4在变,根据这一点就可以优化代码】):
1 #include <stdio.h> 2 #include <string.h> 3 4 void main(){ 5 int arr[] = {3,9,-1,10,-2}; 6 int temp = 0; //临时变量 7 int len = sizeof(arr)/sizeof(int) -1; //数组长度 8 for(int j = 0; j<len ;j++){ //外部循环,决定进行几轮排序 9 10 for (int i = 0; i < len-j; i++){ //内部循环,排序核心代码 11 12 if (arr[i]>arr[i+1]){ 13 temp = arr[i]; 14 arr[i] = arr[i+1]; 15 arr[i+1] = temp; 16 } 17 } 18 } 19 for (int i = 0; i < len+1; i++){ 20 printf("%d,", arr[i]); 21 } 22 }
如果要从大到小,只需要修改if语句块里面的>改为<即可。
甚至你可以打包成一个函数随时调用!
1 #include <stdio.h> 2 #include <string.h> 3 4 void bubble(int arr[], int len){ 5 int temp = 0; //临时变量 6 for(int j = 0; j<len ;j++){ //外部循环,决定进行几轮排序 7 8 for (int i = 0; i < len-j; i++){ //内部循环,排序核心代码 9 10 if (arr[i]>arr[i+1]){ 11 temp = arr[i]; 12 arr[i] = arr[i+1]; 13 arr[i+1] = temp; 14 } 15 } 16 } 17 for (int i = 0; i < len+1; i++){ 18 printf("%d,", arr[i]); 19 } 20 } 21 22 void main(){ 23 int arr1[] = {3,9,-1,10,-2}; 24 int len = sizeof(arr1)/sizeof(int) -1; //数组长度 25 bubble(arr1, len); 26 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!