高频算法面试题总结
排序算法
1. 基础排序算法
-
快速排序:
public void quickSort(int[] arr, int low, int high) { if (low < high) { int pivot = partition(arr, low, high); quickSort(arr, low, pivot - 1); quickSort(arr, pivot + 1, high); } }
- 平均时间复杂度:O(n log n)
- 空间复杂度:O(log n)
-
归并排序:
public void mergeSort(int[] arr, int left, int right) { if (left < right) { int mid = (left + right) / 2; mergeSort(arr, left, mid); mergeSort(arr, mid + 1, right); merge(arr, left, mid, right); } }
- 时间复杂度:O(n log n)
- 空间复杂度:O(n)
2. 线性排序算法
- 计数排序:适合小范围整数排序
- 桶排序:适合均匀分布的数据
- 基数排序:适合整数或字符串排序
查找算法
3. 二分查找
public int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] < target) left