小厨很懒


私信TA

用户名:dotcpp0602251

访问量:188

签 名:

等  级
排  名 35588
经  验 387
参赛次数 0
文章发表 4
年  龄 23
在职情况 待业
学  校
专  业

  自我简介:

为了考研,把C和数据结构冲烂!

TA的其他文章

选择排序法
浏览:47

解题思路:

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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区