原题链接:[编程入门]选择排序
解题思路以及注意事项:
用两层for循环嵌套,让每两个数进行比较,满足条件就交换。
因为其效果像冒泡一样,所以又叫冒泡法。
实例代码:
#include"stdio.h" int main() { int a[10],i,changes,j; //定义了a数组,i,j一般都是用来控制循环的 for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<9;i++) //依次从第一个数开始排,每次到外层循环都会排好一个数 for(j=0;j<10-i;j++) { if(a[j]>a[j+1]) { changes=a[j]; //交换 a[j]=a[j+1]; a[j+1]=changes; } } for(i=0;i<10;i++) //输出 { printf("%d\n",a[i]); } return 0; }
如果还有什么不懂的请到下方评论区留言
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
你这是冒泡排序啊
选择法不是这样的吧
选择不是冒泡,不需要每次对比都交换位置,只需要在每个“剩余最小”交换就可以了,最多交换10次。
应该是j<9-i,因为i=0的时候如果是10-i,j能取到0,那a[j+1]就能取到a[10]了,明显是错的
@dotcpp-小鸟 明白点了。
@dotcpp-小鸟 现在没问题了吧,就是排好第一个数要比较10次,第二个数要比较9次。。。。。。。
我看不懂11-i,能给讲讲吗?