C语言实现选择排序

#include<stdio.h>
/*
	选择排序算法只每次选择需要排序的数组中的最大值(或者最小值)的数组元素,
	将这个元素与最前面 还没有排序的元素互换。 
*/ 

//打印数组的元素 
void printfArr(int arr[],int len)
{
	for(int i = 0; i < len; i++)
	{
		printf("%d\t",arr[i]);
	}	
}

//将数组中的元素采用选择排序的方式,从小到大的排序 
void minToMax(int arr[],int len)
{
	//父循环,找出每次循环的最小值 
	for(int i = 0; i < len-1; i++)
	{
		//定义一个数,存储每次循环的最小值,没次设父循环的第一个值为最小值 
		int min = arr[i];
		//记录最小值位置的索引 
		int minIndex = i;
		//子循环,比较父循环之后(包含父循环代表的数),将最小值放到,父循环的位置 
		for(int j = i+1; j < len; j++)
		{
			//比较j索引处代表的值是否比当前最小值小
			if(arr[j] < min)
			{
				//j索引处的值小,将它赋值给最小值,并记录最小索引 
				min = arr[j];
				minIndex = j;
			} 
		} 
		//找到本次循环的最小值,将最小值和本次循环的第一个数换位置
		arr[minIndex] = arr[i];
		arr[i] = min;
		 
	}
	return;
}

//将数组中的元素采用选择排序的方式,从大到小的排序 
void maxToMin(int arr[],int len)
{
	//父循环,找出每次循环的最大值 
	for(int i = 0; i < len-1; i++)
	{
		//定义一个数,存储每次循环的最大值,没次设父循环的第一个值为最大值 
		int max = arr[i];
		//记录最大值位置的索引 
		int maxIndex = i;
		//子循环,比较父循环之后(包含父循环代表的数),将最大值放到父循环的位置 
		for(int j = i+1; j < len; j++)
		{
			//比较j索引处代表的值是否比当前最小值大
			if(arr[j] > max)
			{
				//j索引处的值大,将它赋值给最大值,并记录最大索引 
				max = arr[j];
				maxIndex = j;
			} 
		} 
		//找到本次循环的最大值,将最大值和本次循环的第一个数换位置
		arr[maxIndex] = arr[i];
		arr[i] = max;
		 
	}
	return;
}
int main()
{
	int arr[] = {5,7,6,9,1,3};
	//对数组进行从小到大的排序 
	minToMax(arr,sizeof(arr)/sizeof(1));
	printfArr(arr,sizeof(arr)/sizeof(1));
	//对数组进行从大到小的排序 
	maxToMin(arr,sizeof(arr)/sizeof(1));
	printfArr(arr,sizeof(arr)/sizeof(1)); 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值