DIVIDE · CONQUER · MERGE
把原问题划分成若干个规模更小的同类子问题(通常规模大致减半)。
递归求解子问题;若规模足够小则直接求解(递归基)。
若有需要,把子问题的解合并成原问题的解(有些问题“合并”为空操作)。
在有序数组上,每次用中点将搜索区间分成两半,舍弃不可能包含目标的一半,区间长度近似减半。这是典型的「分解 → 只在一边递归」的分治策略。
binarySearch(arr, target, left, right):
if left > right: return 未找到
mid = (left + right) / 2
if arr[mid] == target: return mid // 子问题已足够小
if arr[mid] < target: 只在右半继续 // 分治:舍弃左半
else: 只在左半继续