实现顺序
第一步:要确定需要比较的轮数,也就是第一次循环的次数,是数组长度减1,这是从1开始循环。例子是4个元素,所以只需要循环循环3轮。
第二步:是确定内部的第二次循环,比大小的次数:
外部循环第一轮,内部循环比3次;外部循环第二轮,内部循环比2次;外部循环第三轮,内部循环比1次。
### 核心是:如果前面一个数或者当前循环的数值(j)是否大于后面(j+1)的数,如果大就把前面大的数和后一位小的数交换位置,这里需要有个 temp 变量先存一下需要交换的变量(j+1的值)。这个内部一直循环就可以实现第一轮把第一个最大的数字排到最后一位。以此类推,第二轮外部循环时,最大数已经排到了最后一位,只需要比较(长度-1)的次数。
实验正确的代码如下:
package array;
//数组的冒泡排序
public class arrayOrder {
public static void main(String[] args) {
// 实验冒泡排序
// 1.定义一个数组
int[] arr = { 4, 8, 5, 2, 3, 1 };
// 2.定义一个循环,确定比较的轮数arr.length-1
for (int i = 1; i < arr.length; i++) {
// i=1 代表第一轮排序 比较3次 因为是4个数,拿一个出来和另外3个数比较
// i=2 代表第二轮排序 比较2次 比完第一轮就剩下3个数了,3个数里面拿出1个和另外两个比较
// i=3 代表第三轮拍讯 比较1次 以此类推
// 内部循环,判断大小
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}