第一部分:开箱即用 — JDK 内置算法
Java 标准库 (java.util 和 java.util.Arrays) 提供了许多现成的算法,它们经过高度优化和严格测试,是日常开发的首选。
1. 排序算法 (Sorting)
核心类: java.util.Collections, java.util.Arrays
Collections.sort(List<T> list)- 用途: 对
List集合(如ArrayList,LinkedList) 进行升序排序。 - 底层实现: 对于对象集合,它使用一种优化的、稳定的归并排序变体 (TimSort)。稳定性意味着相等元素的相对顺序在排序后保持不变。
- 时间复杂度: 保证 O(n log n)。
- 用途: 对
Arrays.sort(int[] a)- 用途: 对基本类型数组(如
int[],double[]) 进行排序。 - 底层实现: 使用双轴快速排序 (Dual-Pivot Quicksort)。该算法是对经典快排的改进,在实践中效率极高。
- 用途: 对基本类型数组(如
Arrays.sort(T[] a)- 用途: 对对象数组(如
String[],Integer[]) 进行排序。 - 底层实现: 同样使用 TimSort 算法,保证稳定性和高性能。
- 用途: 对对象数组(如
示例代码:
import java.util.*;
// 1. 对 List 排序
List<Integer> numbersList = new ArrayList<>(Arrays.asList(23, 5, 42, -1, 99));
Collections.sort(numbersList);
System.out.println("Sorted List: " + numbersList); // 输出:Sorted List: [-1, 5, 23, 42, 99]
// 2. 对数组排序
int[] numbersArray = {23, 5, 42, -1, 99};
Arrays.sort(numbersArray);
System.out.println("Sorted Array: " + Arrays.toString(numbersArray));
List<String> names = Arrays.asList(, , , );
Collections.sort(names, (a, b) -> a.length() - b.length());
System.out.println( + names);


