当前位置:网站首页>【C语言实现】整数排序-四种方法,你都会了吗、
【C语言实现】整数排序-四种方法,你都会了吗、
2022-08-01 21:34:00 【万羽西】
系列文章目录
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语言_枚举类型介绍
Spark cluster construction
一个关于操作数据库的建议—用户密码
PX4模块设计之十五:PX4 Log设计
Homework 8.1 Orphans and Zombies
Based on php hotel online reservation management system acquisition (php graduation project)
[@synthesize in Objective-C]
作业8.1 孤儿进程与僵尸进程
AIDL communication
ISC2022 HackingClub white hat summit countdown 1 day!Most comprehensive agenda formally announced!Yuan universe, wonderful!
CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料
Flink集群搭建
ORI-GB-NP半乳糖介导冬凌草甲素/姜黄素牛血清白蛋白纳米粒的研究制备方法
方舟开服需要知道的那些事
”sed“ shell脚本三剑客
网络水军第一课:手写自动弹幕
C expert programming
TP5-NPs负载噻吩类化合物TP5白蛋白纳米粒/阿魏酸钠新糖牛血清蛋白纳米粒
小程序--分包
LVS负载均衡群集