解题思路:

1.jpg

首先要知道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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论