这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战
点赞再看,养成习惯。关注这个在互联网摸爬滚打的程序员。
🌲本文收录于专栏《Java入门练习100例》——试用于学完「Java基础语法」后的巩固提高及「LeetCode刷题」前的小试牛刀。
题目描述
难度:简单
用if语句实现a、b、c的值按从小到大排序
知识点
if
判断- 两数交换
解题思路
1.if判断
本题整体的思路就是比较 - > 交换。
if
作为一种分支结构,用来根据判断条件的不同做不同的后续处理。
结构
if(){
}else if(){
}else{
}
注意:一旦进入其中一个else if
其他分支将不再执行。
2.两数交换
通常的做法,好比交换两个杯子的水,需要先找来一个空杯子,也就是一个临时变量存值。代码如下:
int t=a;
a=b;
b=t;
高级做法,不使用其他变量如何做?思考🤔一下,文末给出答案。
代码实现
/**
* 用if语句实现a、b、c的值按从小到大排序
*/
public class question_04 {
public static void main(String args[]){
int a=9,b=5,c=7,t;
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;
}
System.out.println("a="+a+",b="+b+",c="+c);
}
}
输出结果
总结
如何不用其他变量交换两个数的值?
答,将两个数做加/乘法。在做减/除法。代码如下:
a=a*b;
b=a/b; //等价于 a*b/b=a,即将a的值赋给了b
a=a/b; //等价于 a*b/a=b,即将b的值赋给了a
加减的方式留给大家去实现。
这里注意一点,一般在实际开发中,我们除了要考虑代码的时间复杂度,还要考虑代码的可读性。所以是用基本方法还是优化方法需要综合考虑。
最后,如果文章对你有帮助。
记得给文章点个赞呀!
有空欢迎来看看,分享大厂面试和算法刷题,期待和你成为朋友。