java中arrays.sort对int[]数组默认升序原地排序,时间复杂度o(n log n),底层为双轴快排;降序需转integer[]并传collections.reverseorder();支持指定范围排序(左闭右开);基本类型排序不稳定,对象数组稳定。

Java 中用 Arrays.sort 对整型数组排序非常简单,直接调用即可,默认按升序排列。
基本用法:升序排序
对 int[] 类型数组,Arrays.sort() 会原地排序(修改原数组),时间复杂度为 O(n log n),底层使用双轴快排(Dual-Pivot Quicksort)。
- 只需一行代码:
Arrays.sort(arr); - 无需额外导入,
java.util.Arrays已在 JDK 中内置 - 适用于基本类型
int、double、char等,也支持对象数组(需实现Comparable或传入Comparator)
降序排序(int 数组需绕个弯)
int[] 是基本类型,不能直接用 Comparator。要实现降序,得先转成包装类型 Integer[]:
- 用
Stream转换:Integer[] boxed = Arrays.stream(arr).boxed().toArray(Integer[]::new); - 再排序:
Arrays.sort(boxed, Collections.reverseOrder()); - 如需还原为
int[],可再用Arrays.stream(boxed).mapToInt(Integer::intValue).toArray();
指定范围排序
如果只想对数组某一段排序,可用重载方法:Arrays.sort(arr, fromIndex, toIndex)。
-
fromIndex包含,toIndex不包含(左闭右开) - 例如:
Arrays.sort(arr, 2, 5)对索引 2、3、4 的元素排序,其余不变 - 注意边界:索引必须合法,否则抛
IllegalArgumentException
常见注意事项
避免踩坑,记住这几个点:
- 对
null数组调用会抛NullPointerException - 对空数组或单元素数组调用是安全的,不会出错
- 排序是稳定的吗?——对基本类型不保证稳定性(快排本身不稳定);对对象数组,
Arrays.sort使用的是归并排序,稳定 - 多线程环境下,别让多个线程同时操作同一数组并调用
sort,需自行同步
不复杂但容易忽略细节,用对了效率高又省心。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











