先在第一行输入整数n和m,再在第二行输入n个整数构成的数列,要求利用选择排序(每趟排序最多交换一次)进行排序,并输出第m趟排序后的数列状况。请把选择排序定义为一个函数。
输入格式:
测试数据有多组,处理到文件尾。对于每组测试,先在第一行输入整数n和m(1<m<n<=40),再在第二行输入n个整数。
输出格式:
对于每组测试,输出m趟选择排序后的结果,每两个数据之间留一个空格。
输入样例:
6 3
3 5 1 2 8 6
4 3
9 8 7 6
输出样例
1 2 3 5 8 6
6 7 8 9
代码
#include<stdio.h>
int main()
{
int m,n,i,k,index,temp;
int a[40];
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(k=0;k<m;k++)
{
index=k;
for(i=k+1;i<n;i++)
{
if(a[i]<a[index])
{
index=i;
}
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("%d",a[0]);
for(i=1;i<n;i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
}