1.冒泡排序的思想:
- 从头开始两两比较,把较大的元素与较小的元素进行互换
- 每轮把当前最大的一个元素存入到数组当前的末尾
2.冒泡排序的实现步骤:
-
定义一个外部循环控制总共需要冒几轮(数组的长度 - 1)
-
定义一个内部循环,控制每轮依次往后比较几个位置/控制每轮比较的次数(数组的长度 - 当前比较的轮数)
-
如果当前位置的元素值 > 后一个位置的元素值,两者互换
public static void main(String[] args) { /* 冒泡排序的实现步骤: 1.定义一个外部循环控制总共需要冒几轮(数组的长度-1) 2.定义一个内部循环控制每轮依次往后比较几个位置/每轮比较的次数(数组的长度-当前的轮数) 3.如果当前位置的元素值大于后一个位置的元素值,两者交换 */ // 1.动态初始化数组 int[] datas = new int[5]; // 2.键盘录入一组数字 Scanner sc = new Scanner(System.in); for (int i = 0; i < datas.length; i++) { System.out.println("请您录入第" + (i + 1) + "个位置的数值:"); datas[i] = sc.nextInt(); } // 3.冒泡排序的实现 // datas = [3,5,6,8] // i = 0 第一轮 0 1 2 // i = 1 第二轮 0 1 // i = 2 第三轮 0 // 定义一个外部循环控制总共需要冒几轮(数组的长度-1) for (int i = 0; i < datas.length - 1; i++) { // 定义一个内部循环控制每轮往后比较几个位置/定义一个内部循环控制每轮比较的次数(数组的长度-当前比较的轮数) for (int j = 0; j < datas.length - i - 1; j++) { // 如果当前位置的元素值大于后一个位置的元素值,两者互换 if (datas[j] > datas[j + 1]) { int temp = datas[j + 1]; datas[j + 1] = datas[j]; datas[j] = temp; } } } // 遍历数组输出 System.out.println("冒泡排序后的顺序为:"); for (int i = 0; i < datas.length; i++) { System.out.print(datas[i] + "\t"); } }