选择排序 —简解

 选择排序也是一种对数据的排序方式,与冒泡排序不同,选择排序是从所有的数据中选出最小的或者是最大的放在第一位,把第二小的或第二大的放在第二位...依次这样进行。

#include<stdio.h>
int main()
{
	int num = 10;//定义了排序数字的数量
	int a[num];
	for(int i=0;i<num;i++)
	{
		scanf("%d",&a[i]);//输入需要排序的数字
	}
	for(int i=0;i<num-1;i++)
	{
		int k = i;
		for(int j=i+1;j<=num;j++)
		{
			if(a[j]<a[k]) k=j;
		}
		if(i != k)
		{
			int x = a[i];
			a[i] = a[k];
			a[k] = x;
		}
	}
	for(int i=0;i<num;i++)
	{
		printf("%d ",a[i]);
	}
}

下面对核心语句进行分析:

外层循环与我在冒泡排序中讲的那篇文章一样,最后的那一轮不需要进行比较,所以是num-1。然后定义k = i,用于设置一个比较的起始点。在内层循环中,我们对a[i+1]与a[i]进行比较,如果说这a[i+1]小于a[i]的话,那我们就就让k = i+1(即k = j),相当于一直在找一个最小的数。最后面,如果说最后面k != i的话,说明后面有比a[i]更小的数,即a[k],那么我们就对它们交换顺序,把更小的数提到前面...依次进行,达到排序效果。

for(int i=0;i<num-1;i++)
{
	int k = i;
	for(int j=i+1;j<=num;j++)
	{
		if(a[j]<a[k]) k=j;
	}
	if(i != k)
	{
		int x = a[i];
		a[i] = a[k];
		a[k] = x;
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值