输入10个数,用“冒泡法”对10个数排序(由小到大)。冒泡法应该怎么做呀,不是很会。
通过相邻两个数之间的比较和交换,使(数值)较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部。这是网上查的,希望有人可以answer一下
完成程序的编辑,语法修正,编译,断点设置、变量数据跟踪和逐步调试。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- a5156520 2022-06-10 14:31关注
冒泡排序思路是,不知道有什么说清楚:
1、用两个循环来控制冒泡排序,第一个循环控制比较到第几个位置的数的递减量
第二个循环利用第一个循环的i经过计算控制比较到第几个位置的数
2、经过第1个和第2个循环的控制,里面的if来比较前一个和后一个数的大小,然后交换他们的值
参考资料:C 冒泡排序_ROOOOOOM的博客-CSDN博客_c冒泡排序
代码如下:#include <stdio.h> //参考资料: //https://blog.csdn.net/qq_41228218/article/details/99060457 int main(void) { int num[10]; int i; printf("请输入10个整数:\n"); for(i=0;i<10;i++){ scanf("%d",&num[i]); } //冒泡排序 int j; int temp; //i最多取8,即数组倒数第二个数, //因为第一轮比较时j可以到8,即数组最后一个数,j+1 可以比较到数组最后一个数 ,即达到将最大的数放到数组最后的目的 //然后里层循环最后一个数的位置都往前移动一个位置,因为经过上一轮比较后,上一个位置已经放置了较大的数 for(i=0;i<9;i++){ for(j=0;j<9-i;j++){ if(num[j]>num[j+1]){ temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } //打印结果 for(i=0;i<10;i++){ printf("%d ",num[i]); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 yolov8边框坐标
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂