如何在 Java 中排序数组?2025年5月14日 | 阅读10分钟 在 Java 中,sort() 方法是 java.util.Arrays 类中定义的一个静态重载方法。它用于对不同类型数组的值进行排序。排序顺序可以是升序或降序。数值顺序和字典序(字母顺序)是广泛使用的。 sort() 方法可以应用于基本类型(int、char、double、float 等)和对象类型(String、Integer、Double 等)。请注意,该方法对基本类型使用双轴快速排序算法,对对象数组使用修改后的归并排序,从而确保高效排序。 每个 sort() 方法提供以下两种变体
按升序排序数组升序是将元素从最低顺序排列到最高顺序。它也称为自然顺序或数值顺序。我们可以通过以下方式进行排序
使用 sort() 方法在 Java 中,Arrays 是定义在 java.util 包中的类,它提供了一个 sort() 方法来按升序对数组进行排序。它使用双轴快速排序算法进行排序。其复杂度为 O(n log(n))。这是一个静态方法,它将数组作为参数,并且不返回任何内容。我们可以直接使用类名调用它。它接受 int、float、double、long、char 和 byte 类型的数组。 语法 其中a是要排序的数组。 注意:与 Arrays 类类似,Collections 类也提供了 sort() 方法来对数组进行排序。但它们之间存在差异。Arrays 类的 sort() 方法适用于基本类型,而 Collections 类的 sort() 方法适用于对象集合,例如 LinkedList、ArrayList 等。让我们使用 Arrays 类的 sort() 方法对数组进行排序。 在下面的程序中,我们定义了一个整型数组。之后,我们调用 Arrays 类的 sort() 方法并解析要排序的数组。为了打印排序后的数组,我们使用了一个 for 循环。 示例编译并运行输出 Elements of array sorted in ascending order: 5, 12, 22, 23, 34, 67, 90, 109 在上面的程序中,我们也可以使用 Arrays 类 的 toString() 方法来打印数组,如下面的语句所示。它返回指定数组的字符串表示形式。 不使用方法使用 for 循环在下面的示例中,我们初始化了一个整数类型的数组并按升序对数组进行了排序。 示例编译并运行输出 Array elements after sorting: -65, -4, -1, 1, 3, 6, 20, 34, 34, 55, 78, 90 使用用户定义的方法在下面的示例中,我们定义了一个名为 **sortArray()** 的方法,该方法包含按自然顺序排序数组的逻辑。 示例编译并运行输出 Array elements before sorting: 12, 45, 1, -1, 0, 4, 56, 23, 89, -21, 56, 27 Array elements after sorting: -21, -1, 0, 1, 4, 12, 23, 27, 45, 56, 56, 89 按降序排序数组降序是将元素从最高顺序排列到最低顺序。我们可以通过以下方式进行排序
使用 reverseOrder() 方法Java Collections 类 提供了 reverseOrder() 方法来按反向字典序对数组进行排序。这是一个静态方法,因此我们可以直接使用类名调用它。它不解析任何参数。它返回一个强制自然排序(升序)反序的比较器。 这意味着使用 sort() 方法对数组按升序排序,然后 reverseOrder() 方法反转自然顺序,我们得到按降序排序的数组。 语法 假设 a[] 是一个要按降序排序的数组。我们将以以下方式使用 reverseOrder() 方法 让我们按降序对数组进行排序。 在下面的程序中,需要注意的一点是我们已将数组定义为 Integer。因为 reverseOrder() 方法不适用于基本数据类型。 示例编译并运行输出 Array elements in descending order: [205, 110, 102, 78, 23, 11, 6, 4, 0, -1, -9] 让我们看另一个对数组元素按字母顺序排序的程序。 示例编译并运行输出 Array elements in descending order: [Papaya, Pineapple, Orange, Mango, Grapes, Banana, Apple] 不使用方法使用 for 循环在下面的示例中,我们初始化了一个整数数组并按降序进行了排序。 示例编译并运行输出 Array elements in descending order: 94, 56, 43, 32, 12, 9, 5, 2, -2, -26, -78 使用用户定义的方法示例编译并运行输出 Array elements in descending order: 94, 56, 43, 12, 5, -78 如何排序子数组?从另一个数组派生的数组称为子数组。假设 a[] 是一个包含元素 [12, 90, 34, 2, 45, 3, 22, 18, 5, 78] 的数组,并且我们想对从 34 到 18 的数组元素进行排序。它将对子数组 [34, 2, 45, 3, 22, 18] 进行排序,而其他元素保持不变。 要对子数组进行排序,Arrays 类提供了名为 sort() 的静态方法。它将数组的指定范围按升序排序。我们也可以对 long、double、float、char、byte 等类型的数组进行排序。 语法 该方法解析以下三个参数
如果 fromIndex 等于 toIndex,则要排序的范围为空。如果 fromIndex 大于 toIndex,则抛出 IllegalArgumentException。如果 fromIndex < 0 或 toIndex > a.length,它还会抛出 ArrayIndexOutOfBoundsException。 让我们通过一个 Java 程序对子数组进行排序。 示例编译并运行输出 12, 90, 2, 3, 22, 34, 45, 18, 5, 78 使用 Stream APIJava 允许对集合进行函数式操作,包括排序。以下是我们可以详细使用 Stream API 对元素进行排序的方法
示例编译并运行输出 Sorted Array: 1, 2, 3, 5, 9 使用 Arrays.parallelSort() 方法(Java 8 及更高版本)Java 中的 Arrays.parallelSort() 方法(在 Java 8 中引入)使用并行性有效地对大型数组进行排序。与以单线程顺序方式排序的 Arrays.sort() 不同,Arrays.parallelSort() 利用 ForkJoin 框架将数组分割成更小的子数组,然后并行排序它们,最后合并结果。 示例编译并运行输出 Sorted Array: 1, 2, 3, 5, 9 排序算法根据给定的顺序组织元素,而像冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序等技术提供了不同的效率和特性来将数据按给定顺序排列。 结论Java Arrays.sort() 方法是一个极其强大且用途广泛的工具,它不仅可以对原始数组进行排序,还可以对对象数组进行排序。其简单的语法和重载方法使得开发人员能够执行从一维基本数值排序到带有比较器的复杂自定义逻辑的任何操作。它通过针对原始类型的双轴快速排序等优化算法,很好地支持了广泛的应用场景。 无论我们是在创建小型实用工具还是更复杂的应用程序,您都会发现 Arrays.sort() 对于管理数据、编写更清晰的代码以及开发设计更优良的软件非常有益。 Java Arrays.sort() 选择题1. 应该使用哪种方法来排序整数类型的子数组?
答案3) 解释:当我们想将数组的指定范围按升序排序时,我们使用 Arrays.sort(int[] a, int fromIndex, int toIndex) 2. sort() 方法使用哪种算法对基本类型进行排序?
答案1) 解释:sort() 方法对基本类型使用双轴快速排序算法 3. sort() 方法使用哪种算法对对象类型进行排序?
答案1) 解释:sort() 方法对对象类型数组使用修改后的归并排序算法。 4. sort() 方法定义在哪个类中?
答案2) 解释:sort() 方法定义在 java.util.Arrays 类中。 5. sort() 方法是 Arrays 类的 _______ 方法?
答案2) 解释:sort() 方法是 Arrays 类的静态重载方法。 下一个主题Java 教程 |
我们请求您订阅我们的新闻通讯以获取最新更新。