1. 程式人生 > >Java演算法之排序

Java演算法之排序

氣泡排序

氣泡排序它的基本思想是:兩兩比較相鄰的關鍵字,如果反序則交換,直到沒有反序的記錄為止。

  private static void bubbleSort(List<Integer> list) {

        boolean flag = true;//判斷互換狀態,如果一輪下拉已經不互換了,說明排序已經正確了

        for (int i = 0;i < list.size() && flag;i++) {

            flag = false;//製假,如果這一輪迴圈對比中沒有反序則推出外迴圈

            for (int j = list.size()-1;j > i;j--) {

                if (list.get(j) < list.get(j-1)) {
                    //交換值
                    int temp = list.get(j-1);
                    list.set(j-1,list.get(j));
                    list.set(j,temp);
                    //制真,說明還有反序,需要繼續迴圈
                    flag = true;
                }
            }
        }

    }

選擇排序法

氣泡排序的思想就是不斷的交換,通過交換完成最終的排序。選擇排序法是在排序時找到合適的關鍵字再進行交換。

    private static void selectSort(List<Integer> list) {

        int main;//每次對比的主鍵

        for (int i = 0;i < list.size(); i++) {
            main = i;
            for (int j = i + 1; j < list.size(); j++) {
                if (list.get(main) > list.get(j)) {
                    main = j;//如果反序則記錄
                }
            }

            if (main != i) {//判斷本輪迴圈是否遇到反序,如果遇到反序則交換資料
                int temp = list.get(i);
                list.set(i,list.get(main));
                list.set(main,temp);
            }
        }

    }