上个章节介绍了二分查找算法,现在我们看下实际的应用,看下letcode704题,这个是个典型的二分查找题目:有序的数组中寻找目标值target就可以用二分查找算法,题目如下:
假设所有的字符不重复
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
示例 2:
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1
具体的代码实现如下:
class soultion:
#二分查找算法函数
def binary(self, s,target):
#定义左右指针
left=0
right = len(s)-1
mid=int(left+(right-left)/2)
while(left<len(s) and right>=0 and right>=left):
#二分查找算法计算
if(s[mid]<target):
left=mid+1
elif(s[mid]>target):
right=mid-1
elif(s[mid]==target):
return mid
#mid值的定义
mid=int(left+(right-left)/2)
return -1
soultion = soultion()
s = [-1,0,3,5,9,12]
target=12
m = soultion.binary(s,target)
print(m)
二分查找算法有几个关键点:左指针、右指针、中间值、target,编写代码时我们需要掌握这几个关键点:
1、首先需要定义一个左指针、右指针
2、然后根据左指针和右指针计算mid值
3、而判断条件为:nums[mid]与target值的比较