发布于2026-05-23 阅读(0)
扫一扫,手机访问

在Ja va里给整数数组排序,这事儿听起来基础,但用对方法才能事半功倍。对于int[]这样的基本类型数组,Arrays.sort()方法就是为你量身定制的“一键升序”工具。它底层调用了高度优化的双轴快速排序算法,而你只需要一行代码,就能高效、可靠地完成排序任务。
使用Arrays.sort()对int[]排序,简单到几乎无需任何说明:它默认就是升序排列,不需要你额外提供比较器参数。
int这样的基本类型,讨论对象“相等”没有意义,所以不适用。Arrays.sort()对int[]默认升序排序,底层用优化双轴快排,就地排序、时间复杂度O(n log n),支持空数组和单元素数组,无需比较器。
理论说再多,不如看段实实在在的代码。下面就是一个最直接、最实用的示例:
import ja va.util.Arrays;
public class SortExample {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9};
Arrays.sort(nums); // 直接调用,数组即刻变为升序
System.out.println(Arrays.toString(nums)); // 输出: [1, 2, 5, 8, 9]
}
}
这里有个细节需要划重点。如果你操作的是Integer[](即包装类型数组),Arrays.sort()默认也是升序,但底层机制已经悄然不同——它使用的是TimSort算法,并且依赖于Integer类自身实现的Comparable接口。虽然结果一样,但有几个关键差异值得留意:
立即学习“Ja va免费学习笔记(深入)”;
null元素时,排序会抛出NullPointerException。Collections.reverseOrder()作为比较器。但请注意,这个技巧对原始的int[]无效,因为它不支持泛型。int[]进行操作。当然,在绝大多数生产环境下,都强烈建议直接使用Arrays.sort()。但如果你是出于学习原理,或者有极其特殊的定制需求,自己实现一个排序算法也是很好的练习。下面提供一个清晰、可靠的快速排序实现片段,帮助你理解其核心逻辑:
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return i + 1;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
调用方式非常简单:quickSort(nums, 0, nums.length - 1);。不过话说回来,在弄明白原理之后,回归到标准库的Arrays.sort(),依然是那个最明智、最高效的选择。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8