数组排序

我们在学习《数据结构》时,一定学习过数据排序算法相关的算法,例如:冒泡排序、选择法排序、插入排序、快速排序等等。

在 JDK 的 java.util.Arrays 工具类中,提供了 sort() 方法对数组排序。方法声明如下:

  • public static void sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序。

  • public static void sort(byte[] a, int fromIndex, int toIndex) 对指定 byte 型数组的指定范围按数字升序进行排序。

  • public static void sort(char[] a) 对指定的 char 型数组按数字升序进行排序。

  • public static void sort(char[] a, int fromIndex, int toIndex) 对指定 char 型数组的指定范围按数字升序进行排序。

  • public static void sort(double[] a) 对指定的 double 型数组按数字升序进行排序。

  • public static void sort(double[] a, int fromIndex, int toIndex) 对指定 double 型数组的指定范围按数字升序进行排序。

  • public static void sort(float[] a) 对指定的 float 型数组按数字升序进行排序。

  • public static void sort(float[] a, int fromIndex, int toIndex) 对指定 float 型数组的指定范围按数字升序进行排序。

  • public static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。

  • public static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。

  • public static void sort(long[] a) 对指定的 long 型数组按数字升序进行排序。

  • public static void sort(long[] a, int fromIndex, int toIndex) 对指定 long 型数组的指定范围按数字升序进行排序。

  • public static void sort(Object[] a) 根据元素的自然顺序对指定对象数组按升序进行排序。

  • public static void sort(Object[] a, int fromIndex, int toIndex) 根据元素的自然顺序对指定对象数组的指定范围按升序进行排序。

  • public static void sort(short[] a) 对指定的 short 型数组按数字升序进行排序。

  • public static void sort(short[] a, int fromIndex, int toIndex) 对指定 short 型数组的指定范围按数字升序进行排序。

  • public static <T> void sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序。

  • public static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。

示例1

使用 Arrays.sort() 方法对 int 数组进行升序排序,代码如下:

import java.util.Arrays;

public class Demo {

    public static void main(String[] args) {
        int[] array = {
                1, 20, 17, 15, 33, 22, 14, 16, 18
        };

        // 对 array 数组进行升序排序
        Arrays.sort(array);

        // 输出排序后的数组
        System.out.println(Arrays.toString(array));
    }

}

运行示例,输出如下:

[1, 14, 15, 16, 17, 18, 20, 22, 33]

示例2

自定义 Arrays.sort() 方法的排序规则,实现将 int 数组降序排列。代码如下:

import java.util.Arrays;
import java.util.Comparator;

public class Demo {

    public static void main(String[] args) {
        Integer[] array = {
                1, 20, 17, 15, 33, 22, 14, 16, 18
        };

        // 对 array 数组递减排序
        // 这里涉及到了匿名内部类、接口相关知识,后续章节逐一介绍
        Arrays.sort(array, new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

        // 输出排序后的数组
        System.out.println(Arrays.toString(array));
    }

}

上面示例代码中,在 Arrays.sort() 方法的第二个参数中传递了一个实现了 java.util.Comparator 接口的内部类,使用该内部类自定义 Arrays.sort() 的排序方式,实现数组递减排序(接口、内部类相关知识将在后续章节逐一展开)。运行示例,输出如下:

[33, 22, 20, 18, 17, 16, 15, 14, 1]

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号