教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java培訓:數組的排序

更新時間:2022年10月31日09時59分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

  在Java中我們操作數組的時候,經常需要對數組中的元素進行排序。下面筆者為大家介紹一種比較常見的排序算法——冒泡排序。在冒泡排序的過程中,不斷地比較數組中相鄰的兩個元素,較小者向上浮,較大者往下沉,整個過程與水中氣泡上升的原理相似。

  下面通過幾個步驟分析冒泡排序(以升序為例)的整個過程,具體如下。

  第一步:從第一個元素開始,將相鄰的兩個元素依次進行比較,如果前一個元素比后一個元素大,則交換它們的位置,直到最后兩個元素完成比較。整個過程完成后,數組中最后一個元素自然就是最大值,這樣也就完成了第一輪比較。

  第二步:除了最后一個元素,將剩余的元素繼續進行兩兩比較,過程與第一步相似,這樣就可以將數組中第二大的元素放在倒數第二個位置。

  第三步:依次類推,持續對越來越少的元素重復上面的步驟,直到沒有任何一對元素需要比較為止。

  了解了冒泡排序的原理之后,下面通過一個案例實現冒泡排序,如文件2-29所示。

  文件2-29 Example29.java

public class Example29 {
    public static void main (String[] args) {
        int[] arr = { 9, 8, 3, 5, 2};
        System.out.print ("冒泡排序前 :");
        printArray (arr);                       //打印數組元素
        bubbleSort (arr);                       //調用排序方法
        System.out.print ("冒泡排序后 : ");
        printArray (arr);                        //打印數組元素
    }
    // 定義打印數組元素的方法
    public static void printArray (int[] arr) {
         // 循環遍歷數組的元素
         for (int i = 0; i < arr.length; i++) {
              System.out.print (arr[i] + " ") ;   //打印元素和空格
         }
         System.out.print ("\n") ;
    }
    // 定義對數組排序的方法
    public static void bubbleSort (int[] arr) {
        // 定義外層循環
        for (int i = 0; i < arr.length -1; i++) {
            // 定義內層循環
            for (int j = 0; j < arr.length - i - 1; j++) {
                 if (arr[j] > arr[j + 1]) {       // 比較相鄰元素
                      // 下面的三行代碼用于交換兩個元素
                      int temp = arr[j];
                      arr[j] = arr[j + 1];
                      arr[j + 1] = temp;
                 }
            }
            System.out.print ("第" + (i + 1) + "輪排序后: ") ;
            printArray (arr) ;                    // 每輪比較結束打印數組元素
        }
    }
}

  在文件2-29中,第19~34行代碼定義了bubbleSort()方法,在bubbleSort()方法中通過嵌套for循環實現數組元素的冒泡排序,外層循環用來控制進行多少輪的比較,每一輪比較都可以確定一個元素的位置,由于最后一個元素不需要進行比較,因此外層循環的次數為arr.length-1。內層循環的循環變量用于控制每輪比較的次數,它被作為索引用于訪問數組的元素。由于變量在循環的過程中是自增的,因此可以實現相鄰元素依次進行比較。

0 分享到:
和我們在線交談!
精品人妻av区