C语言 选择排序

C语言实现数字选择排序

选择排序

选择排序设置一个起始位置,将其后面未排序的元素进行比较,每选出一个最小(大)的数字将其放在起始位置并将起始位置向后移动一位,直到起始位置移到最后一位。此时便完成了排序。

例如:
有数组 12 8 3
起始位置为第一个数字
第一次排序后:8 12 3
第二次:3 12 8
起始位置后的所有元素已经交换完,起始位置变为为第二个数字
第三次:3 8 12
结束

代码如下

//升序排序
#include<stdio.h>
void swap(int* a, int* b);
void rank(int a[], int len);
#define N 10

int main()
{
	int a[N], i , len;
	len = sizeof(a) / sizeof(a[0]);
	for (i = 0; i < 10; i++)
		scanf_s("%d", &a[i]);
	rank(a, len);
	for (i = 0; i < len; i++)
		printf("%d ", a[i]);
	return 0;
}

void swap(int* a, int* b)//将最小的数与起始位置交换
{
	int x;
	x = *b;
	*b = *a;
	*a = x;
}

void rank(int a[], int len)
{
	int i, k,min;
	for (i = 0; i < len - 1; i++)
	{
		min = i;//起始位置
		for (k = i+1; k < len; k++)
		{
			if (a[k] < a[min])//判断起始位置后的数字大小,将最小的数字交换到起始位置
			{
				swap(&a[k], &a[min]);
			}
		}
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值