题目描述
输入n个数字,使用选择排序对齐进行升序排序。
输入
测试次数T
每组测试数据格式为:数字个数n,后跟n个数字,假设n<20
输出
对每组测试数据,输出选择排序的每趟排序结果
IO模式
本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。

代码如下:
#include <stdio.h>
int main()
{
int t,n,a[20],z,k;//t组数据,每组n个数,z在交换数据在数组中的位置时使用,k在判断顺序时使用
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n-1;i++)
{
k=i;//给k赋初值为要判断的a[i]本身在数组中的位置
for(int j=i+1;j<n; j++)
if (a[j]<a[k]) //如果之后有元素小于它
k=j;//则更新最小的数的位置
if (i!=k)//如果最小的数不是它本身
{
z=a[i];
a[i]=a[k];
a[k]=z; //更换位置
}//下一次循环从a[i+1]开始,前面小的数已经排好序,就不管了
for(int j=0;j<n;j++)//还是和上一题一样的输出格式
{
printf("%d",a[j]);
if (j<n-1)
printf(" ");
}
printf("\n");
}
}
return 0;
}
这个题本身也有点问题,多输出了,所以此代码仅供完成题目要求的输出
要分享的大概就这些,如果有更好的方法欢迎交流!
如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!
(专栏里面还有更多题哦)
7492

被折叠的 条评论
为什么被折叠?



