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;
}

其他

理论上可以应用冒泡归并二分堆排等各种算法,超出初级题目范围,暂且不表。

posted @ 2021-03-30 16:40  CodeSpark  阅读(696)  评论(0编辑  收藏  举报