分支结构练习(排序)
① 冒泡结构
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
/*
控制台输入三个整型数字 从小到大排列后然后输出这三个整型数字
(使用冒泡排序)(eg: numberOne numberTwo numberThree)
1. 先比较前两个数字 ---> 得出结果:相对大值 ---> 将相对大值保存入第二个数字 numberTwo(因为是从小到大排列)
2. 比较剩余两个数字(numberOne numberThree)---> 得出结果:最小值和第二个相对大值 ---> 将最小值保存入 numberOne
3. 比较最大值 ---> 比较(numberTwo numberThree)---> 得出结果:最大值和中间值 ---> 将最大值保存入 numberThree
(概要)
三个数字 先比较前两个数字得出相对大值 保存相对大值入第二个数字 然后比较第一个和第三个数字得出第二个相对大值和最小值 保存最小值入第一个数字 然后比较
两个相对大值决定最大值和中间值(1和2相比 --> 2 = 相对大值 1和3相比 --> 1 = 最小值 2和3是两个相对大值 2和3相比 --> 3 = 最大值 2 = 中间值)
*/
// 1. 实例化 Scanner 对象 ---> 实现控制台扫面(键盘输入)
Scanner input = new Scanner(System.in);
// 2. 接收输入数据保存入整型变量
System.out.print("请输入整型数据:");
int numberOne = input.nextInt();
System.out.print("请输入整型数据:");
int numberTwo = input.nextInt();
System.out.print("请输入整型数据:");
int numberThree = input.nextInt();
// 3. 定义临时变量存放中间值 便于交换变量所保存数据
int temp = 0;
// 4. 使用冒泡排序从小到大排列数据
// 冒泡排序步骤1. 先比较前两个数字 ---> 得出结果:相对大值 ---> 将相对大值保存入第二个数字 numberTwo(因为是从小到大排列)
if (numberOne > numberTwo) {
temp = numberOne;
numberOne = numberTwo;
numberTwo = temp;
// 这里有个小技巧(取消每次交换变量数据时的短时间思考 ---> 每行代码第二个变量 == 它下一行代码第一个变量)
}// 这里得出结果:相对大值 并保存相对大值到变量 numberTwo
// 冒泡排序步骤2. 比较剩余两个数字(numberOne numberThree)---> 得出结果:最小值和第二个相对大值 ---> 将最小值保存入 numberOne
if (numberOne > numberThree) {
temp = numberOne;
numberOne = numberThree;
numberThree = temp;
}// 这里得出结果:最小值和相对大值 并保存最小值到变量 numberOne 相对大值到变量 numberThree
// 冒泡排列步骤3. 比较最大值 ---> 比较(numberTwo numberThree)---> 得出结果:最大值和中间值 ---> 将最大值保存入 numberThree
if (numberTwo > numberThree) {
temp = numberTwo;
numberTwo = numberThree;
numberThree = temp;
}// 这里得出最大值和中间值 并保存最大值入 numberThree 中间值入 numberTwo
System.out.println(numberOne + "\t" + numberTwo + "\t" + numberThree);
}
}
② 嵌套分支结构
public class Demo {
public static void main(String[] args) {
/*
三个数字从小到大排列(if-else)
numberOne ---------- numberTwo ---------- numberThree
---------------------------------------------------------
if: numberOne > numberTwo
---------------------------------------------------------
---------- numberTwo ---------- numberOne ----------
numberThree > numberOne
numberThree < numberTwo
---------------------------------------------------------
else: numberTwo numberThree numberOne
简单解析:
如果1 > 2 ---> 判断3是否大于大的或者小于小的 如果不是 3就是中间值
如果1 < 2 ---> 同理
*/
int numberOne = 9;
int numberTwo = -9;
int numberThree = 14;
if (numberOne > numberTwo) {
if (numberThree > numberOne) {
System.out.println(numberTwo + "\t" + numberOne + "\t" + numberThree);
} else if (numberThree < numberTwo) {
System.out.println(numberThree + "\t" + numberTwo + "\t" + numberOne);
} else {
System.out.println(numberTwo + "\t" + numberThree + "\t" + numberOne);
}
} else {
if (numberThree > numberTwo) {
System.out.println(numberThree + "\t" + numberTwo + "\t" + numberOne);
} else if (numberThree < numberOne) {
System.out.println(numberThree + "\t" + numberOne + "\t" + numberTwo);
} else {
System.out.println(numberOne + "\t" + numberThree + "\t" + numberTwo);
}
}
}
}