public class BubbleSort {
public static void main(String[] args){
int[] arr = new int[]{5,1,3,6,8,2,10,19,15};
// 普通版
// bubbleSort(arr);
// 进阶版
bubbleSortPlus(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 冒泡排序算法
* @param arr
*/
private static void bubbleSort(int[] arr) {
for(int i = 0;i < arr.length-1; i++){ // 进行冒泡的轮数
for (int j = 0; j< arr.length-1-i; j++){ // 每轮进行比较的次数
if (arr[j] > arr[j+1]){
swapNum(arr, j , j+1);
}
}
}
}
/**
* 冒泡排序近阶版
* @param arr
*/
private static void bubbleSortPlus(int[] arr){
int n = arr.length - 1;
while(true){
int index = 0;
for (int i = 0;i < n;i++){ //每轮要交换的次数
if (arr[i] > arr[i+1]){
swapNum(arr, i, i+1);
index = i; // 记录下最后一次交换的位置
}
}
n = index;
if (n == 0){
break;
}
}
}
/**
* 交换数组中的两个数
*/
public static void swapNum(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}