文档目录
排序算法手写——面试必过基本功
本节目录
- 快速排序(QuickSort) 一、核心思想:分治 + 分区 快速排序的流程:选一个 pivot(基准值),把小于 pivot 的放左边,大于的放右边。然后递归对左右两部分排序。 原始数组 …
- 归并排序(MergeSort) 一、核心流程:分治 + 合并 [3, 7, 8, 5, 2, 1, 9, 4] ↓ 分割 [3, 7, 8, 5] [2, 1, 9, 4] ↓ 分割 ↓ …
- 堆排序(HeapSort) 一、核心思路:利用二叉堆 堆排序分两步: 建堆:把数组变成最大堆(父节点 ≥ 子节点)。 排序:反复把堆顶(最大值)交换到数组末尾,然后调整剩余部分为堆。 …
- 排序算法选择策略 一、std::sort 内部实现 std::sort 不是单纯的快排,而是内省排序: // 伪代码 void sort(iterator first, …