分支结构练习(排序)

分支结构练习(排序)

① 冒泡结构

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);
			}
		}
	}
}
posted @ 2021-03-26 15:38  weinen  阅读(223)  评论(0)    收藏  举报