原理
外层循环:确认哪些元素未进行排序
内层循环:将未排序元素中的相邻元素进行比较,相对较小的元素放到前面
外层循环原理图
示例
package wxw.mengyuan;
/**
* 堆代码 duidaima.com
* 冒泡排序
*/
public abstract class BubbleSorting {
/**
* 对数组中的元素进行排序
*
* 原理
* (1) 外层循环:确定未排序的元素
* (2) 内层循环:将相邻元素进行比较,较大值放到后面
*
* @param arr 要排序的数组
*/
public static void sort(Comparable[] arr) {
// 外层循环:确定未排序的元素
for(int i = arr.length - 1; i > 0; i--) {
// 内层循环:将相邻元素进行比较,较大值放到后面
for(int j = 0; j < i; j++) {
if (greater(arr[j], arr[j+1])) {
exch(arr, j, j+1);
}
}
}
}
/**
* 校验第一个元素是否比第二个元素大
*
* @param v 第一个元素
* @param w 第二个元素
*/
private static boolean greater(Comparable v, Comparable w) {
return v.compareTo(w) > 0;
}
/**
* 将数组中索引为i、j的两个元素交换位置
*
* @param arr 数组
* @param i 索引i
* @param j 索引j
*/
private static void exch(Comparable[] arr, int i, int j) {
Comparable temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}