高频算法面试题总结
高频算法面试题总结
排序算法
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