特别小白的一道题,纯娱乐使用
题目要求:
输入3个整数,,从小到大排序后输出
样例输入:20 7 33
样例输出:7 20 33
解法:
法一:3个整数的总共排列顺序一共就有6种可能,写个if-else把这6种可能都列举出来就OK,不改变原来给的整数的顺序,代码太简单,不写了
时间复杂度:O(1)
空间复杂度:O(1)
注:对于选择结构,主要的时间是耗费在执行else语句或then语句上,但是要注意检验条件也需要O(1)的时间。
算法缺点:笨方法,属于穷举的思路,只对这种目标个数少的方法可用,对于大数组排序基本不可能实现,适用非常有限
法二:在比较的时候对原来给的整数的顺序进行调整,把这3个变量改成a≤b≤c的形式。本质上思路与冒泡法排序很相似
#include<stdio.h>
int main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a > b) {t = a; a = b; b = t;}//执行后a≤b
if(a > c) {t = a; a = c; c = t;}//执行后a≤c
if(b > c) {t = b; b = c; c = t;}
printf("%d %d %d",a,b,c);
return 0;
}
时间复杂度和空间复杂度和法一相同
算法缺点:虽然不用像法一一样列举出所有可能的排序情况,但是同样对大数组的排序有限