栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

简易的排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简易的排序

冒泡排序

        都知道冒泡排序是最简单的排序,其原理就是相邻的两个数比较,如果前面的数字比后面的数字要大的话,两者就交换位置。

如果我说的不是很明白,那就看一下动态图。

冒泡排序

下面是代码:


 

#include 
#define N 10
using namespace std;
int main()
{
	int i, j, t;
	int a[N] = {10, 8, 5, 6, 2, 3, 1, 7, 9, 4};
	for (i = 0; i < N - 1; i++) {
		for (j = 0; j < N - 1 - i; j++) {
			if (a[j] > a[j + 1]) {
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}
	for (i = 0; i < N; i++)
		printf("%d ", a[i]);
	return 0;	
} 

 实质上,冒泡排序是先将最大的数字排好。

选择排序

选择排序的话,就是往后面找比当前小而且最小的数,如果找到了就交换,看起来就好像是避免了像冒泡排序的挨个交换。

不理解的看一下动图

选择排序
​​​​​

下面是代码:



#include 
#define N 10
using namespace std;
int main()
{ 
	int a[N] = {10, 8, 5, 6, 2, 3, 1, 7, 9, 4};
	int i, j, t;
	for (i = 0; i < N; i++) {
		int flag = i;
		for (j = i + 1; j < N; j++) {
			if (a[flag] > a[j]) {
				flag = j;
			}
		}
		if (flag != i) {
			t = a[flag];
			a[flag] = a[i];
			a[i] = t;
		}
	}
	for (i = 0; i < N; i++)
		printf("%d ", a[i]);
	return 0;
} 
 插入排序

插入排序有点像打扑克一样,就是默认先前抓到手的牌是有序的,如果找到一个数,就往前面插,其他牌往后挪。

原理看一下动图:

插入排序

下面是代码:


 
 

#include 
#define N 10
using namespace std;
int main()
{
	int a[N] = {10, 8, 5, 6, 2, 3, 1, 7, 9, 4};
	int i, j, t;
	//默认i前面的数字已经排好了 
	for (i = 1; i < N; i++) {
		int key = a[i];
		j = i - 1;
		while (j >= 0 && key < a[j]) {
			a[j + 1] = a[j];
			j--;
		}
		a[j + 1] = key; 
	}
	for (i = 0; i < N; i++)
		printf("%d ", a[i]);
	return 0;
} 

 注明出处,动图来自菜鸟教程,内容为作者原创。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号