基本的排序算法:冒泡排序 + 插入排序 + 選擇排序

1 冒泡排序 + 插入排序 + 選擇排序

  • 原地排序:空間複雜度 O(1)
  • 穩定:待排序的序列中存在相等的元素,經過排序後,相等的元素前後順序沒有改變;
是否原地排序 是否穩定 最好 最壞 平均
冒泡 O(N) O(N^2) O(N^2)
插入 O(N) O(N^2) O(N^2)
選擇 O(N^2) O(N^2) O(N^2)

1.1 冒泡排序

  • 當某次冒泡已經沒有數據交換,說明已經達到完全有序,不用再繼續執行後續的冒泡操作;
 public static void bubbleSort(int[] a, int n) {
 
        for (int i = 0; i < n; i++) {
            boolean flag = false;
            for (int j = 0; j < n - i - 1; j++) {
                if (a[j] > a[j + 1]) {
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;

                    // 數據有交換
                    flag = true;
                }
            }

            if (!flag) {
                break;
            }
        }
    }

    public static void main(String[] args) {
        int[] a = {2, 4, 6, 5, 3, 8, 7};
        bubbleSort(a, a.length);
        System.out.println(Arrays.toString(a));
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章