SZU实验七 循环3数组1【id:312】【20分】F. 选择排序(数组)

题目描述

输入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;
}

这个题本身也有点问题,多输出了,所以此代码仅供完成题目要求的输出

要分享的大概就这些,如果有更好的方法欢迎交流!

如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!

(专栏里面还有更多题哦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值