[排序]冒泡排序及優化

這裏寫圖片描述

private static void bubblesort(int[] list) {
        int i, j;
        //循環次數
        for (i = 0; i < list.length; i++) {
            //這裏是從後往前循環
            for (j = list.length - 2; j >= i; j--) {
                //若前者大於後者
                if (list[j] > list[j + 1]) {
                    //交換
                    int temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }
    }

優化

private static void bubblesort(int[] list) {
        int i, j;
        boolean flag = true;
        //循環次數
        for (i = 0; i < list.length && flag; i++) {
            //初始化爲false
            flag = false;
            //這裏是從後往前循環
            for (j = list.length - 2; j >= i; j--) {
                //若前者大於後者
                if (list[j] > list[j + 1]) {
                    //交換
                    int temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                    //如果有數據交換,則flag爲true
                    flag = true;
                }
            }
        }
    }

時間複雜度:O(n2)

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