冒泡排序

冒泡排序

把第一個元素與第二個元素比較,如果第一個比第二個大,則交換他們的位置。接着繼續比較第二個與第三個元素,如果第二個比第三個大,則交換他們的位置….

我們對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣一趟比較交換下來之後,排在最右的元素就會是最大的數。

除去最右的元素,我們對剩餘的元素做同樣的工作,如此重複下去,直到排序完成

如圖所示:

在這裏插入圖片描述

代碼如下:

	 /**
     * 冒泡排序
     */
    @Test
    public void bubbleSort(){
        // 先輸出未排序之前的數組
        System.out.println("未排序數組:");
        printArray();
        for (int i = 1; i < originArray.length; i++) {

            // 當前序列已排序好的標記
            boolean flag = true;
            for (int j = 0; j < originArray.length-i; j++) {
                // 每一輪選取一個最大的數
                if (originArray[j]>originArray[j+1]){
                    // 值的交換
                    int temp = originArray[j];
                    originArray[j] = originArray[j+1];
                    originArray[j+1] = temp;
                    flag = false;
                }
            }

            if (flag){
                break;
            }
            // 打印數據
            System.out.print("第"+i+"輪排序:");
            printArray();
        }

    }

在這裏插入圖片描述

性質

1、時間複雜度:O(n2) 2、空間複雜度:O(1) 3、穩定排序 4、原地排序

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