7-5 选择法排序 (只排三轮) (10 分)

输入10个无序的整数,用选择法对10个整数按升序排序。注意:要求排序只排3轮。

输入格式:

在一行中输入10个用空格间隔的无序整数。

输出格式:

在一行中输出变化后的数组,每个整数输出占5列。

输入样例:

8 5 2 6 7 4 1 9 12 10

输出样例:

    1    2    4    6    7    5    8    9   12   10 


 因为题目要求只排三轮,所以只需要for循环三次。

#include<stdio.h>
int main()
{
    int i, index, k, temp;
    int a[10];
    for(i = 0;i<10;i++)
    {
        scanf("%d", &a[i]);     //将输入的数依次赋给数组a(从a[0]~a[9])
    }

  /*对这10个数进行排序*/
    for(k = 0;k<3;k++)          //排三次(循环三次)
    {
        index = k;              //index存放最小值所在的下标
        for(i = k+1;i<10;i++)   //寻找最小值所在的下标
        {
            if(a[i]<a[index])   //如果小于所设置的最小值,则进行交换
            {
                index = i;
            }
        }
        temp = a[index];        //最小元素与下标为K的元素进行交换
        a[index] = a[k];
        a[k] = temp;
    }
    for(i = 0;i<10;i++)
    {
        printf("%5d", a[i]);    //输出排序后结果
    }
    return 0;
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 冒泡法排序是一种简单的排序算法,它的基本思想是通过不断比较相邻的两个元素,将较大的元素向后移动,较小的元素向前移动,直到整个序列有序为止。 具体过程如下: 1. 从序列的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。 2. 继续比较相邻的元素,直到最后一个元素,此时最大的元素已经被移到了序列的最后一个位置。 3. 重复上述步骤,但是此时不需要再比较已经排好序的元素,因此每次比较的元素个数都会减少一个。 4. 直到所有元素都排好序为止。 例如,对于序列 [7, 3, 5, 1, 9, 2, 8, 4, 6],冒泡法排序的过程如下: 第一比较:[3, 5, 1, 7, 2, 8, 4, 6, 9] 第二比较:[3, 1, 5, 2, 7, 4, 6, 8, 9] 第三轮比较:[1, 3, 2, 5, 4, 6, 7, 8, 9] 第四比较:[1, 2, 3, 4, 5, 6, 7, 8, 9] 因此,最终的排序结果为 [1, 2, 3, 4, 5, 6, 7, 8, 9]。 ### 回答2: 冒泡排序是一种简单的排序算法,也是最为基础的一种排序算法,它通过对相邻元素的比较和交换来实现排序。它的过程如下: 1. 比较相邻元素,如果前一个元素大于后一个元素,就将它们两个交换位置。 2. 对每一对相邻元素做同样的工作,从第一对到最后一对。这样,经过一的操作,最后一个元素就是最大的元素。 3. 对除了最后一个元素以外的所有元素重复以上的步骤,直到没有任何一对数字需要比较。 下面以一个简单的例子来进行解释: 7 6 3 8 2 首先,比较7和6,发现7大于6,交换位置,得到6 7 3 8 2。 然后,比较7和3,发现7大于3,交换位置,得到6 3 7 8 2。 再比较7和8,发现7小于8,不需要交换位置,得到6 3 7 8 2。 接着,比较8和2,发现8大于2,交换位置,得到6 3 7 2 8。 第一比较结束,最大的元素8已经被排到了最后。 接下来,以同样的方法进行第二和第三轮比较,最终得到排序好的数组:2 3 6 7 8。 冒泡排序的时间复杂度为O(n²),空间复杂度为O(1),它在数据规模较小时可以使用,但对于大规模数据的排序来说,效率不高。 ### 回答3: 冒泡法排序是一种基本的排序算法,也是最简单的一种算法之一。它的实现过程就像水中的气泡,不断向上冒泡的过程,因此被称为“冒泡法”。 冒泡法排序的过程可以描述如下: 1.比较相邻的元素。如果第一个比第二个大,就交换它们。 2.对每一对相邻的元素做同样的比较工作,从第一对到最后一对。这一步做完后,最后的元素会是排序好的最大值。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上述步骤,直到没有任何一对数字需要比较。 举个例子,假设要对数组[5,2,1,4,3]进行排序,具体过程如下: 第一遍排序,比较相邻的元素: [2,5,1,4,3] [2,1,5,4,3] [2,1,4,5,3] [2,1,4,3,5] 此时,最大的元素5已经冒泡到了数组的最后面。 第二遍排序,对除最后一个元素5以外的所有元素重复上述操作: [1,2,4,3,5] [1,2,3,4,5] 此时,整个数组已经排序完成。 冒泡法排序的时间复杂度为O(n²),空间复杂度为O(1),虽然这种算法不是最优秀的排序算法,但是由于其简单易懂的实现方式,很容易理解和掌握,因此在某些场合下仍然被广泛使用。同时,也是刚开始学习排序算法时最好的入门算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值