P5715 【深基3.例8】三位数排序
题目
描述
给出三个整数 a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。
输入输出样例
输入 | 输出 |
---|---|
1 14 5 |
1 5 14 |
2 2 2 |
2 2 2 |
解答
解法一
直接比较
#include<iostream>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b>>c;
if(a>=b && a>=c)
{
if(b>c)
cout<<c<<" "<<b<<" "<<a;
else
cout<<b<<" "<<c<<" "<<a;
}
else if(b>=a && b>=c)
{
if(a>c)
cout<<c<<" "<<a<<" "<<b;
else
cout<<a<<" "<<c<<" "<<b;
}
else
{
if(a>b)
cout<<b<<" "<<a<<" "<<c;
else
cout<<a<<" "<<b<<" "<<c;
}
return 0;
}
解法二
选择排序
#include <iostream>
using namespace std;
int a,b,c;
int main(){
cin>>a>>b>>c;
if(a>b) swap(a,b); //swap就是交换两个数
if(a>c) swap(a,c);
if(b>c) swap(b,c);
cout<<a<<' '<<b<<' '<<c;
return 0;
}
解法三
直接询问,桶排序变形
#include <iostream>
using namespace std;
int a,b,c;
int main(){
cin>>a>>b>>c;
for(int i=0;i<=100;i++)
{
if(i == a)
cout<<a<<" ";
if(i == b)
cout<<b<<" ";
if(i == c)
cout<<c<<" ";
}
return 0;
}
解法四
sort 快速排序
#include <iostream>
#include <algorithm> //sort
using namespace std;
int s[3];
int main(){
cin>>s[0]>>s[1]>>s[2];
sort(s,s+3);//sort默认从小到大排
cout<<s[0]<<' '<<s[1]<<' '<<s[2];
return 0;
}
其他
理论上可以应用冒泡、归并、二分、堆排等各种算法,超出初级题目范围,暂且不表。
博主的个人网站:https://codespark.cn/