排序算法(一)——冒泡排序原理及Java實現

冒泡排序原理:我覺得類似於拍集體照的時候老師指揮按大小個排隊

依次比較兩個相鄰的數組元素、滿足交換條件就交換二者位置,不滿足就繼續向下比較。


冒泡排序原理動態圖(摘自網絡)


Demo代碼

//冒泡排序(正序)
int[] arr = {3, 13, 11, 9, 8, 1, 6, 10};

for (int i = 0; i < arr.length; i++) {
    //定義flag可以提升效率,避免已經排序完成還繼續做無用循環
    boolean flag = true;

    for (int j = 0; j < arr.length - 1; j++) {

        if (arr[j] > arr[j + 1]) {
            //將arr[j+1]賦給臨時變量
            int temp = arr[j + 1];

            //交換二者位置
            arr[j + 1] = arr[j];
            arr[j] = temp;
 
            //標識排序未完成,繼續循環
            flag = false;
        }
    }
    if (flag) {
        break;
    }
    System.out.println("第" + (i + 1) + "次排序結果:" + Arrays.toString(arr));
}

System.out.println("最終結果:" + Arrays.toString(arr));

 不定義flag的輸出結果(循環了8次)

 定義flag的輸出結果(循環了5次)

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