三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

【AI 时代软件工程师的算法图谱】05 二分查找:在不确定性中定位边界

【AI 时代软件工程师的算法图谱】05 二分查找:在不确定性中定位边界

大家好,我是Tony Bai。

欢迎来到我们的专栏 《AI 时代软件工程师的算法图谱》的第二季:组织与调度。在这一季,我们将面对海量数据,学习如何高效地查找、排序和分配资源。

第一站,我们重访一个老朋友:二分查找(Binary Search)

很多人觉得二分查找很简单:“不就是mid = (left + right) / 2吗?”。但在实际工程和高级算法题中,二分查找的难点从来不是代码怎么写,而是 “对什么进行二分”。

在有序数组里找一个数,那是幼儿园水平。

在并不显式存在的“答案空间”里,通过二分法逼近最优解,才是二分查找的高阶心法。这被称为 “值域二分” (Binary Search on Answer)。

今天,我们将从最基础的边界查找,一路进阶到解决复杂的资源分配问题。

模式解构:寻找“红蓝边界”

二分查找的本质,不是“找中间值”,而是 “不断缩小可行解的区间”。

我们可以把搜索空间想象成是一排染了颜色的球。左边全是蓝色(满足条件 A),右边全是红色(满足条件 B)。二分查找的目标,就是找到 “蓝色区域的最后一个” 或者 “红色区域的第一个”。

标准二分 (Exact Match)

  • 场景:在无重复的有序数组中查找target

  • 核心:nums[mid] == target直接返回。

← 返回列表