杰瑞科技汇

Java数组如何从大到小排序?

Java数组从大到小排序

在Java中,有几种方法可以对数组进行从大到小(降序)排序,以下是几种常见的实现方式:

Java数组如何从大到小排序?-图1
(图片来源网络,侵删)

使用Arrays.sort() + 逆序

import java.util.Arrays;
import java.util.Collections;
public class ArraySortDescending {
    public static void main(String[] args) {
        // 对于基本类型数组
        int[] numbers = {5, 2, 8, 1, 9};
        Arrays.sort(numbers); // 先升序排序
        // 然后反转数组
        for (int i = 0; i < numbers.length / 2; i++) {
            int temp = numbers[i];
            numbers[i] = numbers[numbers.length - 1 - i];
            numbers[numbers.length - 1 - i] = temp;
        }
        System.out.println("降序排序: " + Arrays.toString(numbers));
        // 对于对象数组(如Integer)
        Integer[] numbersObj = {5, 2, 8, 1, 9};
        Arrays.sort(numbersObj, Collections.reverseOrder());
        System.out.println("降序排序(对象数组): " + Arrays.toString(numbersObj));
    }
}

使用自定义比较器

import java.util.Arrays;
import java.util.Comparator;
public class ArraySortDescending {
    public static void main(String[] args) {
        Integer[] numbers = {5, 2, 8, 1, 9};
        // 使用lambda表达式作为比较器
        Arrays.sort(numbers, (a, b) -> b.compareTo(a));
        System.out.println("降序排序: " + Arrays.toString(numbers));
    }
}

使用第三方库(如Guava)

import com.google.common.primitives.Ints;
import java.util.Arrays;
public class ArraySortDescending {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 8, 1, 9};
        numbers = Ints.toArray(Ints.asList(numbers).reverse());
        System.out.println("降序排序: " + Arrays.toString(numbers));
    }
}

手动实现排序算法(如冒泡排序)

import java.util.Arrays;
public class ArraySortDescending {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 8, 1, 9};
        // 冒泡排序(降序)
        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = 0; j < numbers.length - 1 - i; j++) {
                if (numbers[j] < numbers[j + 1]) {
                    int temp = numbers[j];
                    numbers[j] = numbers[j + 1];
                    numbers[j + 1] = temp;
                }
            }
        }
        System.out.println("降序排序: " + Arrays.toString(numbers));
    }
}

注意事项

  1. 对于基本类型数组(如int[]),不能直接使用Collections.reverseOrder(),因为它只能用于对象数组
  2. 对于对象数组,需要确保元素类型实现了Comparable接口,或者提供自定义的Comparator
  3. 对于大型数组,建议使用Arrays.sort()而不是手动实现的排序算法,因为它更高效

选择哪种方法取决于你的具体需求和数组类型,对于大多数情况,使用Arrays.sort()配合Collections.reverseOrder()(对于对象数组)是最简洁高效的方法。

Java数组如何从大到小排序?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇