排序之选择排序

版权声明:个人博客:www.jingyile.cn 萌新发博文积累经验,欢迎各位大佬指导!!! https://blog.csdn.net/JYL1159131237/article/details/72869598
问题及代码:

1043: 选择法排序

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 4283  Solved: 2633
[Submit][Status][Web Board]

Description

用选择法对10个整数从小到大排序。

Input

10个整数

Output

排序好的10个整数

Sample Input

4 85  3 234 45 345 345 122 30 12

Sample Output

3
4
12
30
45
85
122
234
345
345

/*烟台大学计算机学院
作者:景怡乐
完成时间:2017年6月5日
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k;
    int a[10];
    int t;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);//输入10个待排序的数
    for(i=0;i<9;i++)
    {
        k=i;//默认待排序数中的第一个数为最小的
        for(j=i+1;j<10;j++)
            if(a[j]<a[k])//若下一个数比这个数更小
        k=j;//k 始终指示出现的较小的元素的位置
        if(i!=k)//当前的数不是最小的,将它与最小的数交换
        {
            t=a[i];
            a[i]=a[k];
            a[k]=t;
        }
    }
    for(i=0;i<10;i++)
    printf("%d\n",a[i]);
    return 0;
}
算法思路:首先通过9次比较,找出最小的数,将其与第一个交换,然后从剩下的9个数中找出最小的,将其与第一个交换,如此循环即可。
展开阅读全文

没有更多推荐了,返回首页