选择排序_(2)

/*
选择排序(2)
有n个整数,请使用选择排序算法对其按从小到大排序,输出第m趟排序的结果。
Input
测试数据有多组,每组的第一行是两个正整数n和m
其中2<=n<=20,0<m<=n-1,第二行是n个整数,所有数据之间均用空格分隔。
Output
对于每组测试数据,输出单独的一行,对这n个整数进行m趟选择排序后的结果。数据之间用一个空格分隔。
*/
//
#include<stdio.h>

int main()
{
    int in[111];
    int n,m,i,j,pos,tt,cnt;
    while( ~scanf("%d%d",&n,&m) )
    {						//
        for( i=0;i<n;i++ ) scanf("%d",&in[i]);

        cnt=0;
        for( i=0;i<n;i++ )
        {
            if( cnt>=m ) break;
            pos=i;							// 
            for( j=i+1;j<n;j++ )
                if( in[pos]>in[j] ) pos=j;
            cnt++;                          // cnt++ 放在if里面会陷入死循环 eg. 12345
            tt=in[pos]; in[pos]=in[i]; in[i]=tt;
        }
        for( i=0;i<n;i++ )
        {
            if( i ) printf(" ");
            printf("%d",in[i]);
        }
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/124561471