c语言简单易懂选择排序法

文章通过一个例子解释了选择排序法的原理,即每次找到最小(或最大)元素并将其放到正确位置,用C语言编写了排序代码,并分享了学习过程和心得。
摘要由CSDN通过智能技术生成

首先

      我们需要了解选择排序法的原理,这对我们理解掌握选择排序法有很大的帮助。

让我们看个简单的例子。
未交换前

{4,56,15,74,16,1,87}

第一次交换

{156157416487}

第二次交换

{145674161587}

第三次交换

{141574561687}

······
······
最后一次交换

{141516567487}

由以上例子可以知道第一次交换是将第一个元素定为最小值,然后将其他元素依次与第一个元素进行比较,若是比第一个元素小,则与第一个元素交换值,依次循环此做法做到最小值为第一个元素,同理第二次交换是将第二个定为最小值,重复第一次交换的步骤,所以第三次,第四次······直到整个数组的元素按照从小到大排序。(因为此处所举的是从小到大排序的例子,若是需要从大到小排序,则改变if条件即可)

上代码
#include <stdio.h>
int main()
{
	int a[] = { 4,56,15,74,16,1,87 };//定义一个整数型数组存放所需要排序的数据
	for (int i = 0; i < 7; i++)//第一个for循环是用来控制外层循环次数,因为此处有7个元素,只需要排6次即可,当排到第六个元素的时候,第七个元素自动排好了。
	{
		for (int j = i + 1; j < 7; j++)//第二个for循环用来控制内层循环次数,每第n次外层循环都要将第n个元素作为最小值,所以m个元素内层排序只需要执行m-n次即可。
		{
			int min = a[i];
			if (a[i] > a[j])
			{
				a[i] = a[j];//此处交换满足if语句的两者元素的值
				a[j] = min;
			}
		}
	}
	for (int i = 0; i < 7; i++)
	{
		printf("%d\n", a[i]);//打印排序好后的数组
	}
	return 0;
}

由此可见,经过两次for循环的执行,即可达到排序的目的
本人大一学生,才疏学浅,只是想将自己学习的过程遇到的疑问,以及解决的方法分享出来,以便帮助更多和我一样喜欢编程的学生。同时这是我第一次发布博客,请多多指教。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值