-
初始化左边界
left
为1,右边界right
为n
,表示查找范围是从版本1到版本n。 -
使用一个循环,直到左边界
left
不小于右边界right
为止,循环中进行如下操作:- 计算中间版本
mid
,这是为了防止整数溢出,所以采用了(left + (right - left) / 2)
的方式计算。 - 调用
isBadVersion
函数来判断mid
是否为坏版本。 - 如果
mid
是坏版本,那么将右边界right
缩小到mid
,表示答案在左半边。 - 如果
mid
不是坏版本,那么将左边界left
增加到mid + 1
,表示答案在右半边。
- 计算中间版本
-
当循环结束时,
left
和right
相等,此时的值就是第一个坏版本的索引,因为区间已经缩小到只有一个版本。
这个算法的核心思想是不断缩小查找范围,通过二分法的方式快速定位第一个坏版本。这种算法的时间复杂度是 O(log n),其中 n 是版本总数。
需要注意的是,这段代码中的 isBadVersion
函数应该在实际使用中定义并实现,以根据具体情况判断版本是否为坏版本。