一、二分法介绍
采用一分为二的方法。不断地二等分,最后找到目标数。
二、二分法的实际应用
对分查找
使i,j分别指向该数组的第一个和最后一个的下标。取两个下表的之和的一半(当不满足整数时向左取),对比目标数,对比大小,决定下个区间取大还是取小。不断重复直至找到目标数或j在i的前面(即不存在该数)。
三、python代码
题目见力扣704.二分查找。
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
示例 1:
输入:nums = [-1,0,3,5,9,12],
target= 9
输出: 4 解释: 9 出现在 nums中并且下标为 4
常规解法:
class Solution:
def search(self, nums: List[int], target: int) -> int:
i=0
j=len(nums)-1
while i<=j:
t = (i+j+1) // 2
num = nums[t]
if num == target:
return t
elif num > target:
j = t -1
else:
i=i+1
return -1
结果
结果平平,没有什么优化。