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

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

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

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

好口碑IT培訓(xùn)

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

  下面通過(guò)幾個(gè)步驟分析冒泡排序(以升序?yàn)槔?的整個(gè)過(guò)程,具體如下。

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

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

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

  了解了冒泡排序的原理之后,下面通過(guò)一個(gè)案例實(shí)現(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") ;
    }
    // 定義對(duì)數(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]) {       // 比較相鄰元素
                      // 下面的三行代碼用于交換兩個(gè)元素
                      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()方法中通過(guò)嵌套for循環(huán)實(shí)現(xiàn)數(shù)組元素的冒泡排序,外層循環(huán)用來(lái)控制進(jìn)行多少輪的比較,每一輪比較都可以確定一個(gè)元素的位置,由于最后一個(gè)元素不需要進(jìn)行比較,因此外層循環(huán)的次數(shù)為arr.length-1。內(nèi)層循環(huán)的循環(huán)變量用于控制每輪比較的次數(shù),它被作為索引用于訪(fǎng)問(wèn)數(shù)組的元素。由于變量在循環(huán)的過(guò)程中是自增的,因此可以實(shí)現(xiàn)相鄰元素依次進(jìn)行比較。

0 分享到:
和我們?cè)诰€(xiàn)交談!