问题描述:
给顶一个排序的整数数组(升序)和一个要查找的目标整数target,查找到target第1次出现的下标(从0开始),如果target不存在与数组中,返回-1.
class Solution:
def binary_search(self,nums,target):
if target > nums[len(nums)-1]:
return -1
else:
i = 0
for num in nums:
if num ==target:
return i+1
else:
i += 1
if __name__ == '__main__':
solution = Solution()
nums = [1,2,3,4,5,6,7]
target =3
targetindex = solution.binary_search(nums,target)
print("索引是:",targetindex)
书中的代码运行不通,未考虑到特殊情况,稍微修改 附上
class Solution:
def binary_search(self,nums,target):
return self.search(nums, 0, len(nums), target)
def search(self,nums,start,end,target):
if target > nums[len(nums)-1]:
return -1
mid = int((start +end)/2)
if nums[mid] > target:
return self.search(nums, start, mid, target)
if nums[mid] == target:
return mid+1
if nums[mid] < target:
return self.search(nums, mid, end, target)
if __name__ == '__main__':
solution = Solution()
nums = [1,2,3,4,5,6,7,8]
target =2
targetindex = solution.binary_search(nums,target)
print("索引是:",targetindex)