一、分治的三重境界
Mermaid · 渲染中(下方为源码)
graph LR A[分治] --> B[入门: 归并/快排] A --> C[进阶: 归并中统计跨区间] A --> D[高阶: CDQ/线段树分治]
| 层次 | 代表 | 特征 |
|---|---|---|
| 入门 | 归并排序、快排 | 分→治→合,结构清晰 |
| 进阶 | 逆序对、右侧更小元素 | 在归并过程中统计跨区间信息 |
| 高级 | 最近点对、CDQ 分治 | 分治降维 + 排序技巧 |
本文聚焦进阶层:利用归并排序的合并阶段,高效统计"跨越中点的配对关系"。
二、核心洞察:归并时统计跨区间对
归并排序合并两个有序子数组时,左右两半的元素恰好形成所有"跨中点"的配对。如果左半的 a[i] > 右半的 b[j],那么左半 i 及其后面的所有元素都与 b[j] 构成逆序对。
左半: [3, 5, 7] 右半: [1, 4, 6]
合并时 b[0]=1 < a[0]=3 → 1 与左半所有元素(3个)构成逆序对
这就是 O(n log n) 统计逆序对的原理。