今天继续学习排序的算法,这道题目是非常简单的,甚至不需要我们使用循环就可以完成!
这么简单的题目就拿来水博客了(还是要好好讲解一下的)
题目描述
分析
没错!这道题竟然只需要对三个数字进行排序,这根本不需要使用循环,直接手撕就好了
既然是从小到大,而且只有三个数,那我们就不浪费空间开数了,直接用abc三个数字存进去就可以了,然后将a、b比较,将小的数字作为a,最后再对b、c进行比较就解决完啦~(没错就是这么简单,是不是不可思议!!)
C++代码
那我们就直接上手撕的AC代码就OK👇
解法一
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin >> a >> b >> c ;
if(a>b)
swap(a,b); //交换函数
if(a>c)
swap(a,c);
if(b>c)
swap(b,c); //没错,其实就是冒泡排序
cout << a << " " << b << " " << c ;
return 0;
}
当然了,我们在理论上也是可以使用数组存放然后用sort函数的👇
解法二
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[3]={0}; //开数组并初始化
int i;
for(i=0;i<3;i++){
cin >> a[i] ; //存入数据
}
sort(a,a+3); //用sort排序,默认从小到大
for(i=0;i<3;i++){
cout << a[i] << " " ; //输出数据,别忘了空格
}
return 0;
}
这就是这个题目的两种解法啦,希望对大家解题有帮助~