IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言实现】整数排序-四种方法,你都会了吗、 -> 正文阅读

[C++知识库]【C语言实现】整数排序-四种方法,你都会了吗、

系列文章目录

C-基础算法
求两个整数的较大值
两种计算平均成绩题型



前言

排序方法有很多种,将来博主会全部整理出一个专栏,有兴趣的小伙伴可以点个关注喔!今天讲最简单的三个整数的排序。如果有想要整理的资料或者算法可以评论区留言!


一、方法一:换位法

用 if 判断三个数的大小, 利用中间变量交换位置,得到想要的排列顺序

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int t = 0;
	scanf("%d %d %d", &a, &b, &c);
	if (a > b)
	{
		t = a;
		a = b;
		b = t;
	}
	if (a > c)
	{
		t = a;
		a = c;
		c = t;
	}
	if (b > c)
	{
		t = b;
		b = c;
		c = t;
	}
	printf("%d %d %d\n", a, b, c);
	return 0;
}

二、方法二:函数调用法

我们在进行函数调用法的时候,要清楚的明白我们需要传值调用还是传址调用,这里明显是要改变 a b c 三个数的值,所以用传址调用,将地址传向函数,函数用指针接收

#include <stdio.h>

void sort(int* x, int* y, int* z)
{
	int tmp = 0;
	if (*x > *y)
	{
		tmp = *x;
		*x = *y;
		*y = tmp;
	}
	if (*x > *z)
	{
		tmp = *x;
		*x = *z;
		*z = tmp;
	}
	if (*y > *z)
	{
		tmp = *y;
		*y = *z;
		*z = tmp;
	}
}

void print(int a, int b, int c)
{
	printf("%d %d %d\n", a, b, c);
}

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d %d", &a, &b, &c);
	sort(&a, &b, &c);
	print(a, b, c);
	return 0;
}

方法三:两两比较法

这种方法很好理解,但是代码实现比较费劲,一般不建议这么用,但为了拓宽思路,我们还是了解一下。

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d %d", &a, &b, &c);
	if (a < b)
	{
		if (b < c)
		{
			printf("%d %d %d\n", a, b, c);
		}
		else
		{
			if (a < c)
			{
				printf("%d %d %d\n", a, c, b);
			}
			else
			{
				printf("%d %d %d\n", c, a, b);
			}
		}
	}

	return 0;
}

这边只列出了其中一种 a < b 的情况,还剩五种大家可以脑补,非常繁琐,不建议使用!!!

方法四:打擂法

定义一个最小值和最大值,让他们等于其中一个数,然后和另外两个比较,大的就替代最大值,小的替代最小值,类似于打擂的效果,最后用总值减去最大值和最小值即可得到中间值

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int max = 0;
	int min = 0;
	int mid = 0;
	scanf("%d %d %d", &a, &b, &c);
	max = min = a;
	if (b > max)
	{
		max = b;
	}
	if (b < min)
	{
		min = b;
	}
	if (c > max)
	{
		max = c;
	}
	if (c < min)
	{
		min = c;
	}
	mid = a + b + c - max - min;
	printf("%d %d %d\n", min, mid, max);
	return 0;
}

这里需要注意不能用 if else 来写,if else 是如果 if 成立了,就不会执行 else 了,但我们这里每一个都需要判断,所以必须要用 if if 的写法


总结

以上就是关于三个整数排序的所有内容,虽然题目简单,但是方法多种多样,是不是有你没有想到的方法呢?如果觉得自己学到了,评论区666走一波哦!
最后别忘了点赞+ 关注+ 收藏!
嘻嘻

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:37:50  更:2021-08-02 10:40:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 19:41:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码