C语言三种排序

1、交换排序:

核心思想是通过不断交换相邻的元素将最大或最小的元素逐步移动到正确的位置上。

​
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a[10] = { 10,3,2,6,5,7,4,9,1,8 };
	int i, h, j, k;
	for (i = 0; i < 9; i++)
	{
		for (j = i + 1; j < 10; j++)
		{
			//交换相邻的元素
			if (a[i] > a[j])
			{
				k = a[i];
				a[i] = a[j];
				a[j] = k;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%3d", a[i]);
	}
	return 0;
}

​

2、冒泡排序:

核心思想重复地比较相邻的两个元素,如果顺序错误就交换它们,直到整个序列有序。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int j, i, temp, n, k[10] = { 6,3,8,10,2,4,1,9,7,5 };
	for (i = 0; i < 9; i++)
	{
		for (j = 0; j < 9 - i; j++)
		{
			if (k[j] > k[j + 1])
			{
				temp = k[j];
				k[j] = k[j + 1];
				k[j + 1] = temp;
			}
		}
	}
	for (n = 0; n < 10; n++)
		printf("%5d", k[n]);
	return 0;
}

2、选择排序:

核心思想是每次从待排序的元素中选择最小(或最大)的元素,放置到已排序序列的末尾。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a[10] = { 10,3,2,6,5,7,4,9,1,8 };
	int i, h, j, k;
	for (i = 0; i < 9; i++)
	{
		k = i;
		for (j = i; j <= 9; j++)
		{
			if (a[k] > a[j])
				k = j;
		}
		h = a[i];
		a[i] = a[k];
		a[k] = h;
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d\t", a[i]);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千寻千

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值