原题链接:[编程入门]选择排序
解题思路:

首先要知道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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复