1. 程式人生 > >Java:排序 - 冒泡

Java:排序 - 冒泡

對於n個數的陣列升序排序,冒泡最多遍歷n-1次。
第一次遍歷下標0到n-1,將每次訪問的下標m和m+1的值比較,前者大則雙方互換位置,遍歷後使得下標n-1一定是最大值。
第m次遍歷下標0到n-m-1,使得下標n-m-1到n-1是升序的。
直到每次不發生交換,則排序完成。

對於n個數的陣列降序排序,…,m小則互換位置,…直到不發生交換,完成

氣泡排序法,時間複雜度為n2, 空間複雜度為1,排序後相同元素位置不變,屬於穩定排序。

  public static boolean sortArr(int[] arr){

    boolean swap;
    for (int
i=arr.length-1;i>0;i--){ swap = false; for (int j=0;j<i;j++){ if(arr[j] > arr[j+1]){ int tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; swap = true; } } if (!swap){ return true; } } return
true; }

測試

int[] arr1 = {6,4,4,3,1};
sortArr(arr1);
System.out.println(Arrays.toString(arr1));

輸出

[1, 3, 4, 4, 6]