1.三整数排序

特别小白的一道题,纯娱乐使用


题目要求:

输入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;
}
               时间复杂度和空间复杂度和法一相同

      算法缺点:虽然不用像法一一样列举出所有可能的排序情况,但是同样对大数组的排序有限

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值