c语言_数组_简单选择排序

简单选择排序算法思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

以长度为n=10的序列(46 74 53 14 26 38 86 65 27 34)的选择排序过程做示范: 第1趟:在10个数中选出最小值后,将最小值和第1个数组元素交换,则数组元素为(14 74 53 46 26 38 86 65 27 34); 第2趟:在剩下的9个数中选出最小值后,将最小值和第2个数组元素交换,则数组元素为(14 26 53 46 74 38 86 65 27 34); 第3趟:在剩下的8个数中选出最小值后,将最小值和第3个数组元素交换,则数组元素为(14 26 27 46 74 38 86 65 53 34); …… 第9趟:在剩下的2个数中选出最小值后,将最小值和第9个数组元素交换,则数组元素为(14 26 27 34 38 46 53 65 74 86)

共执行9趟操作,可将有n=10个元素的数组排成有序序列。

测试输入:

10

88 84 23 85 32 34 80 52 91 77

(运行结果中显示的前两行)

预期输出:

23 84 88 85 32 34 80 52 91 77

23 32 88 85 84 34 80 52 91 77

23 32 34 85 84 88 80 52 91 77

23 32 34 52 84 88 80 85 91 77

23 32 34 52 77 88 80 85 91 84

23 32 34 52 77 80 88 85 91 84

23 32 34 52 77 80 84 85 91 88

23 32 34 52 77 80 84 85 91 88

23 32 34 52 77 80 84 85 88 91

提示: 如果有10个整数,要求输出每趟选择排序共9趟的结果。

#include <stdio.h>
#define N 100
int main ()
{
	int a[N],n,i,min,t,m;
	scanf ("%d",&n);
	for (i=0;i<n;i++)
		scanf ("%d",&a[i]);
	for (m=0;m<n-1;m++)
	{
		min=m;
		for (i=m+1;i<n;i++)
		{
			if (a[min]>a[i])
			{
				min=i;
			}
		}
		t=a[min];
		a[min]=a[m];
		a[m]=t;
		for (i=0;i<n;i++)
			printf ("%d ",a[i]);
		printf ("\n");
	}
    return 0;
}

运行结果:

运行成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值