冒泡演算法及進階版
阿新 • • 發佈:2022-03-23
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; } }