原题链接:[编程入门]选择排序
解题思路:
首先要知道K是对最小值的定位,j是一个搬运工,不断地去找后面的值来和当前的K对应的值相比较,
如果在比较的过程中,出现的值比当前的k值小,那么k就变成了这个值的定位,依次比较和变换,直到所有的无序数比较完成;
比较完成之后,如果这个K定位的值不是第一个值即(k != i),那么两个值互换,此时需要临时变量(temp)来储存这个K所定位的值
注意事项:
选择排序最简单的理解:
有两个区:有序区和无序区,在无序区中找到所需值后,放到有序区中,然后无序区继续循环比较找值,直到无序全部转为有序。
参考代码:
#include #include int main() { int a[10]; int i,j,k,temp;//k是最小数的下标; for(i = 0;i<10;i++){ scanf("%d",&a[i]); } for (i = 0;i < 9;i++){ k = i;//假设最小值是第一个数,用这个暂时最小数去找数组最小数 for(j = i; j < 10;j++){ if(a[j] < a[k]) { k = j; } } //如果最小数不是第一个数,则把最小数和第一个数互换。降序同样的原则 if(k != i){ temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i = 0;i < 10; i++){ printf("%d\n",a[i]); } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复