将三个数字从小到大排列(或者从大到小排列)c及python

将三个数字从小到大排列(或者从大到小排列)c及python

很基础的算法题
输入三个整数x,y,z,请把这三个数由小到大输出。

c:

一般情况下,我们是用三个if来进行一个数字的变化,很简单的依次排序。
代码如下:

#include<stdio.h>
int main( )
{ 
int a , b , c ,t;
scanf(“%d , %d , %d” , &a , &b ,&c) ;
printf(“\n\n a=%d , b=%d , c=%d \n” ,a , b , c) ;
if(a>b)
{t=a ; a=b ; b=t ;}
if(a>c)
{t=a ; a=c ; c=t ;}
if(b>c)
{t=b ; b=c ; c=t ;}
printf(“\n\n a=%d , b=%d , c=%d \n” ,a , b , c) ; 
}

2.我做一道题的时候,喜欢将这道算法的解法都尽量写出来,所以还有第二种思路。
第二种思路其实不难,我们在这里放三个数字,a b c。要是他不满足a<b<c的话我们就将他们的前两个或者后两个数字交换位置,
举个例子,比如2,3,1的话,很显然前面两个数字排序符合,那么我们交换后两个他就会变成2 1 3那么前面两个又不满足了,那我们在交换前面两个 1 2 3这样就成了,当然交换了两次会比前面复杂一点,但是只是三个整形,实际上,这些多余的复杂度对现在的电脑处理器来说,什么都不算。
代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x,y,z,a;
	scanf("%d %d %d",&x,&y,&z);
	while(1) 
	{
	if(x>y)
	   {a=x;x=y;y=a;}
	if(y>z)
	   {a=y;y=z;z=a;}
	if(x<=y&&y<=z) 
	    break; 
	}
    printf("%d %d %d",x,y,z);
 }

python:

python相对c有很多其他的用法,用法很多,我就不一一详解,我们可以用尽量短的代码去完成这个算法,那么我们有何必去使用更长的呢?
这里我使用了字典以及列表的转化,排序函数,以及一次迭代
代码如下:

a['A'],a['B'],a['C']=map(int,input().split())
b_list=sorted(list(a.values()))
for i in range(3):    
    print(b_list[i]," ",end="")

大家注意在列表中sorted函数是有返回值的,他的返回值是一个排序好的列表,而sort函数的返回值却是none,所以这里的list(a.values())也可以在后面加上.sort()
这里的values函数是提出字典中的值,并返回一个名为dic_values列表,大家有兴趣可以去查一下,这里就不详解了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值