1.这是一篇数据结构学习的开头,仅供个人参考以及博主:-小黄怪- 参考学习。
2.主要是拿来给自己做笔记的,学啥记啥,有意思的就记。
3.接下来的日子,不定时更新,内容看个人学习,yeah,加油。
"""
二分查找实现
"""
from typing import List
class Solution:
#二分查找非递归方法
def search(self, nums: List[int], target: int) -> int:
i = 0
j = len(nums)-1
k = -1
while i<=j:
k = (i+j)//2
if target == nums[k]:
return k
elif target > nums[k]:
i = k+1
elif target < nums[k]:
j = k-1
else:
return -1
#二分查找递归方法
def bin_search(self,nums:List[int],target:int,start,end):
while start<=end:
k = (start+end)//2
if target == nums[k]:
return k
elif target > nums[k]:
return self.bin_search(nums,target,k+1,end)
elif target < nums[k]:
return self.bin_search(nums,target,start,k-1)
else:
return -1
if __name__ == '__main__':
a=Solution()
print(a.search([-1,0,3,5,9,12],9))
b = [-3,-1,0,3,4,5,7,8,9]
print(a.bin_search(b,-1,0,len(b)))