一:冒泡排序的实现
二:结论
- 排序的总轮数为数组长度 - 1。
- 每次排序后,下一轮的排序中比较的次数会减少一次,因为每一轮中都有一个数固定了他的位置(最大数,第二大的数…)。
三:代码
package com.yang.array;
import java.util.Arrays;
public class Demo02 {
public static void main(String[] args) {
// 演示冒泡排序
int[] arr = {124,4,34,132,1};
int temp; // 临时变量,辅助交换
// 外层for控制排序的轮数(数组长度 - 1)
for (int i = 0; i < arr.length - 1; i++){
// 内层for控制每次排序的交换次数(排序的总轮数 - 外层i当前值)和进行元素比较和交换
for (int j = 0; j < arr.length - 1 - i; j++){
if (arr[j] > arr[j + 1]){ // 如果前一个数大于后一个数,则交换
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
System.out.println("===第" + (i + 1) + "轮排序的第" + (j + 1) + "次比较===");
System.out.println(Arrays.toString(arr)); // 使用工具类Arrays中的toString方法查看数组中元素的情况(也可以使用for循环遍历查看)
}
}
}
}
运行结果:
往数组中添加几个元素:-100,12,0,33
package com.yang.array;
import java.util.Arrays;
public class Demo02 {
public static void main(String[] args) {
// 演示冒泡排序
int[] arr = {124,4,34,132,1,-100,12,0,33};
int temp; // 临时变量,辅助交换
// 外层for控制排序的轮数(数组长度 - 1)
for (int i = 0; i < arr.length - 1; i++){
// 内层for控制每次排序的交换次数(排序的总轮数 - 外层i当前值)和进行元素比较和交换
for (int j = 0; j < arr.length - 1 - i; j++){
if (arr[j] > arr[j + 1]){ // 如果前一个数大于后一个数,则交换
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
System.out.println("===第" + (i + 1) + "轮排序的第" + (j + 1) + "次比较===");
System.out.println(Arrays.toString(arr)); // 使用工具类Arrays中的toString方法查看数组中元素的情况(也可以自己使用for循环遍历查看)
}
}
}
}
运行结果:
结果是正确的