Java 基础 30 数组冒泡排序和Arrays工具类

1.1 数组的冒泡排序

  冒泡排序:就是相邻的两个元素进行两两比较,把元素值大的元素依次向后排.

相关链接
维基百科

1.1.1 数组排序之冒泡排序原理图解

Java 基础 30 数组冒泡排序和Arrays工具类_第1张图片
BubbleSort.png

1.1.2 数组排序之冒泡排序代码实现

1.1.2.1案例代码


  package com.itheima;
/*
 * 数组排序:(冒泡排序)
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个int类型的数组
        int[] arr = {24,69,80,57,13};
        
        /*
        //第一次比较
        //arr.length-1是为了防止索引越界
        //arr.length-1-0是为了减少比较的次数
        for(int x=0; x arr[x+1]) {
                //交换数据
                int temp = arr[x];
                arr[x] = arr[x+1];
                arr[x+1] = temp;
            }
        }
        //调用遍历方法
        System.out.println("第一次比较完毕:");
        printArray(arr);
        
        //第二次比较
        //arr.length-1是为了防止索引越界
        //arr.length-1-1是为了减少比较的次数
        for(int x=0; x arr[x+1]) {
                //交换数据
                int temp = arr[x];
                arr[x] = arr[x+1];
                arr[x+1] = temp;
            }
        }
        //调用遍历方法
        System.out.println("第二次比较完毕:");
        printArray(arr);
        
        //第三次比较
        //arr.length-1是为了防止索引越界
        //arr.length-1-2是为了减少比较的次数
        for(int x=0; x arr[x+1]) {
                //交换数据
                int temp = arr[x];
                arr[x] = arr[x+1];
                arr[x+1] = temp;
            }
        }
        //调用遍历方法
        System.out.println("第三次比较完毕:");
        printArray(arr);
        
        //第四次比较
        //arr.length-1是为了防止索引越界
        //arr.length-1-3是为了减少比较的次数
        for(int x=0; x arr[x+1]) {
                //交换数据
                int temp = arr[x];
                arr[x] = arr[x+1];
                arr[x+1] = temp;
            }
        }
        //调用遍历方法
        System.out.println("第四次比较完毕:");
        printArray(arr);
        */
        
        //用循环改进
        /*
        for(int y=0; y<4; y++) {
            for(int x=0; x arr[x+1]) {
                    //交换数据
                    int temp = arr[x];
                    arr[x] = arr[x+1];
                    arr[x+1] = temp;
                }
            }
        }
        */
        
        /*
        //循环做的次数不能写固定的值,用arr.length-1改进即可
        for(int y=0; y arr[x+1]) {
                    //交换数据
                    int temp = arr[x];
                    arr[x] = arr[x+1];
                    arr[x+1] = temp;
                }
            }
        }
        printArray(arr);
        */
        
        //如果我有多个数组要排序,每个数组写这样的一段代码,太麻烦,怎么办呢
        //用方法改进
        sort(arr);
        System.out.println("排序后:");
        printArray(arr);
    }
    
    /*
     * 两个明确:
     *      返回值类型:void
     *      参数列表:int[] arr
     */
    public static void sort(int[] arr) {
        for(int x=0; x arr[y+1]) {
                    int temp = arr[y];
                    arr[y] = arr[y+1];
                    arr[y+1] = temp;
                }
            }
        }
    }
    
    /*
     * 数组遍历
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x

1.2 Arrays工具类

1.2.1 Arrays类的概述和使用

  • Arrays:提供了对数组操作的各种方法。
    • public static String toString(int[] a):把数组转成字符串
    • public static void sort(int[] a):对数组进行升序排序

1.2.1.1 案例代码

package com.itheima;

import java.util.Arrays;

/*
 * Arrays:提供了对数组操作的各种方法。
 * public static String toString(int[] a):把数组转成字符串
 * public static void sort(int[] a):对数组进行升序排序
 */
public class ArraysDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24,69,80,57,13};
        
        //public static String toString(int[] a):把数组转成字符串
        System.out.println("排序前:"+Arrays.toString(arr));
        
        //public static void sort(int[] a):对数组进行升序排序
        Arrays.sort(arr);
        
        System.out.println("排序后:"+Arrays.toString(arr));
    }
}

1.2.2 Arrays类中构造方法的问题

Arrays类中真的没有构造方法吗?

  • 一个类中没有构造方法,系统将提供一个无参构造方法。
    而我们在帮助文档中没有看到Arrays类的构造方法,这是为什么呢?

  Arrays类中有构造方法,只不过构造方法被private修饰,外界是无法使用的。因为外界无法使用,所以帮助文档中就看不到。

通过查看源码,我们找到了如下的内容:

private Arrays() {}
  • Arrays类的这种设计是常用的工具类的设计思想:
    • 构造方法私有。
    • 成员都用static修饰。
    • Math,Collections等

你可能感兴趣的:(Java 基础 30 数组冒泡排序和Arrays工具类)