python 二分查找实现 —— (楷pig学数据结构Day1)

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)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值