Java 排序
每当我们听到排序算法出现时,如选择排序、冒泡排序、插入排序、弧度排序、桶状排序等,但如果我们仔细观察,这里没有要求我们使用任何一种算法。它是借助java中的线性和非线性数据结构进行的简单排序。因此,在Java中,我们可以在循环的帮助下用蛮力进行排序,并且有两种内置的方法来进行排序。
在Java中进行排序的方法
- 使用循环
- 使用数组类的sort()方法
- 使用集合类的sort方法
- 对子数组进行排序
让我们讨论一下这四种方法,并为每一种方法提出一个代码。
方法1: 使用循环
输出
时间复杂度: O(N2 )
辅助空间: O(1)
方法2: 使用Arrays类的sort()方法
Arrays.Sort()方法适用于原始数据类型的数组,默认为升序排序。
例子1
输出
时间复杂度: O(N log N)
辅助空间: O(1)
例子2
输出
时间复杂度: O(N log N)
辅助空间: O(1)
方法3: 使用集合类的sort()方法
Collections.sort()适用于对象集合,如ArrayList和LinkedList。
例子
输出
时间复杂度: O(N log N)
辅助空间: O(1)
例2
输出
时间复杂度: O(N log N)
辅助空间: O(1)
方法4: 只对一个子数进行排序
输出
时间复杂度: O(N log N)
辅助空间: O(1)
注意
- Java在sort()中使用哪种排序算法?
以前,Java的Arrays.sort方法对基元数组使用Quicksort,对对象数组使用Merge排序。在Java的最新版本中,Arrays.sort方法和Collection.sort()使用Timsort。
-
默认情况下是按升序排序的。
-
如何对数组或列表进行降序排序?
可以在Collections.reverseOrder()的帮助下完成。
-
如何在Java中编写我自己的排序函数?