教育行业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 分享到:
和我们在线交谈!