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

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

Java培訓(xùn):數(shù)組的排序

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

好口碑IT培訓(xùn)

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

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

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

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

  第三步:依次類推,持續(xù)對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對元素需要比較為止。

  了解了冒泡排序的原理之后,下面通過一個案例實現(xiàn)冒泡排序,如文件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);                       //打印數(shù)組元素
        bubbleSort (arr);                       //調(diào)用排序方法
        System.out.print ("冒泡排序后 : ");
        printArray (arr);                        //打印數(shù)組元素
    }
    // 定義打印數(shù)組元素的方法
    public static void printArray (int[] arr) {
         // 循環(huán)遍歷數(shù)組的元素
         for (int i = 0; i < arr.length; i++) {
              System.out.print (arr[i] + " ") ;   //打印元素和空格
         }
         System.out.print ("\n") ;
    }
    // 定義對數(shù)組排序的方法
    public static void bubbleSort (int[] arr) {
        // 定義外層循環(huán)
        for (int i = 0; i < arr.length -1; i++) {
            // 定義內(nèi)層循環(huán)
            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) ;                    // 每輪比較結(jié)束打印數(shù)組元素
        }
    }
}

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

0 分享到:
和我們在線交談!