python 二分查找_LeetCode基础算法题第120篇:二分查找算法

3b3f9ebd5691001fd482abb31137565a.png

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后> 到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和> 精力有限,其他语言的实现有兴趣的朋友请自己尝试。初级难度说的差不多的时候,我打算再加点其他内容,我可能会从操作系统到协议栈,从分布式> 聊到大数据框架,从大数据聊到人工智能,... ...。

如果有任何问题可以在文章后评论或者私信给我。

我会持续分享下去,敬请您的关注。

LeetCode 704. 二分查找 (Binary Search)

问题描述:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例:

af63459a26bd6a82babdc939bd7b0ae2.png

C语言实现:

二分查找是一个十分常用的算法,其实在前面的题目中我们已经用过这种算法。

本来不打算解这道题,但是还是觉得劲量不要遗漏的好。

对于新手来说,要提醒一下,二分查找查找的前提是有序数列,所以要操作的数列是一个无序的,要先排序。

我曾经就碰到过一个面试的,上来就二分查找,根本没有判断数组是否有序。

二分查找的思路非常简单,通常我们要定义两个整形变量left和right,分别保存数组的起始下标和末尾下标。

然后通过判断target与nums[(right+left)/2]的大小关系,来不断调整left和right的值,以此来不断的缩小查找的范围,最后得到结果。

3c72d36b640339f96b9f93a322d383e6.png

具体代码如下:

309dc991bdbb971ac4f14e2f242a1500.png
c8e4169aea3747a6123686f33978d1a5.png

Java语言的实现:

Java 的实现和C语言的实现基本一致,不再撰述。代码如下:

8ee30487fb34232a2cc99f0faa7c03e2.png
bd30693aaea5f0a6c07c53ef267ca66d.png

python语言的实现:

python 的实现和C语言的实现基本一致,不再撰述。代码如下:

4fe79bd9839e3262d72e1f4a97b91103.png
2eeca5e50137e28f42130b1e8140318a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值