题解:洛谷 P5715 【深基3.例8】三位数排序
【题目来源】
【题目描述】
给出三个整数 \(a,b,c(0\le a,b,c\le 100)\),要求把这三位整数从小到大排序。
【输入】
输入三个整数 \(a,b,c\),以空格隔开。
【输出】
输出一行,三个整数,表示从小到大排序后的结果。
【输入样例】
1 14 5
【输出样例】
1 5 14
【算法标签】
《洛谷 P5715 三位数排序》 #模拟#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 主函数 - 程序入口
* @return 程序执行状态码(0表示成功)
*/
int main()
{
int a, b, c; // 定义三个待排序的整数
cin >> a >> b >> c; // 输入三个整数
// 方法一(注释掉的原始方案):多重条件判断排序
// if (a<=b && a<=c) {
// a1 = a;
// b1 = b;
// c1 = c;
// } else if (b<=a && b<=c) {
// a1 = b;
// b1 = a;
// c1 = c;
// } else {
// a1 = c;
// b1 = a;
// c1 = b;
// }
// if (b1<=c1) {
// cout << a1 << " " << b1 << " " << c1;
// } else {
// cout << a1 << " " << c1 << " " << b1;
// }
// 方法二(实际采用的方案):使用swap函数进行冒泡排序
if (a > b)
{
swap(a, b); // 保证a <= b
}
if (b > c)
{
swap(b, c); // 保证b <= c(此时c是最大值)
}
if (a > b)
{
swap(a, b); // 再次保证a <= b
}
// 输出排序结果(使用printf保证格式统一)
printf("%d %d %d", a, b, c);
return 0; // 程序正常结束
}
【运行结果】
1 14 5
1 5 14
浙公网安备 33010602011771号