我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Python语言实现二分法查找

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Python语言实现二分法查找

这篇文章主要为大家展示了“如何使用Python语言实现二分法查找”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Python语言实现二分法查找”这篇文章吧。

前言:

二分法也就是二分查找,它是一种效率较高的查找方法

假如公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不爽,离职了,那这时候张三肯定不是公司第47个人了,怎么样才知道张三排第几呢,下面我们用二分法把他找出来

思路:

给你一本1000页的书籍,随机给定一个页码,如何用最快的方式找到它?如果一页一页逐步去查找,则最高需要查找一千次!那我们如何用二分法来解决这个问题呢?二分法的关键就是二分这个词。

如何使用Python语言实现二分法查找

 步骤1:设定一个页码作为中心点来将1000页分为两份,中位数的作用就是每次缩小一半查找范围,即达到开方的效果。即可以用 (首位+末位)/2 = 中位数。

如何使用Python语言实现二分法查找

 步骤2:将需要查找的页码与中位数比价,如果大于中位数则舍弃对中位数的前一半查找,反之则舍弃对后一半范围查找,达成开方效果。 步骤3:在新的查找范围重新计算出中位数 

如何使用Python语言实现二分法查找

步骤4:查找页码对比中位数,确定新的查找范围

如何使用Python语言实现二分法查找

步骤5:循环以上步骤,直到找到该页码为止

如何使用Python语言实现二分法查找

代码:

通过以上思路解析,我们知道了二分法实行步骤,接下来就通过代码来实现步骤,首先是循环实现

#模拟页码array = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69,99,107]#首位值low = 0#末位值height = len(array)-1#设定查找页码findNum = 1 #循环查找while True:    #获取中位数    mid = int((low+height)/2)    #打印中位数,查看循环次数    print(array[mid])    #如果中位数小于查找值,则锁定后半段    if array[mid] < findNum:        #重置低位数        low = mid + 1    #如果中位数大于查找值,则锁定前半段    elif array[mid] > findNum:        #重置高位值        height = mid - 1    #找到数字则打印该值下标,终止循环    elif array[mid]==findNum:        print('find it:',array[mid],' index:',mid)        break

除了上述方式外,也可以使用递归来实现,代码更加简洁

array = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69,99,107] #函数递归#定义一个函数,给三个形参:低位值,高位值,查找值def BinarySearch(low,height,findNum):    #计算出中位数    middle = (low+height)//2    #如果中位数小于查找值,则锁定后半段    if findNum >array[middle]:        #重置低位数        low = middle +1    #如果中位数大于查找值,则锁定前半段    elif findNum<array[middle]:        #重置高位值        height = middle - 1    else:        #找到该值并返回        return '该值下标为:%s,值为:%s'%(middle,array[middle])    #没有找到则调用自身继续查找    return BinarySearch(low,height,findNum) print(BinarySearch(array[0],len(array)-1,19))

总结:

如何使用Python语言实现二分法查找

根据结果反馈,使用二分法常规Python检索用循环方式找数字21,他是排在11位,中位数查询3次,使用Python二分法检索递归方式先取查询数字的倍数,然后锁定前半段进行索引,索引的步骤耗时更少

以上是“如何使用Python语言实现二分法查找”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Python语言实现二分法查找

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Python语言实现二分法查找

这篇文章主要为大家展示了“如何使用Python语言实现二分法查找”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Python语言实现二分法查找”这篇文章吧。前言:二分法也就是二分查找,它是
2023-06-29

C语言如何使用二分查找实现猜数游戏

这篇文章给大家分享的是有关C语言如何使用二分查找实现猜数游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(壹)二分查找 1.1 何为二分查找折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法
2023-06-29

使用Python实现二分法查找的示例

这篇文章主要介绍了使用Python实现二分法查找的示例,二分法通常又叫二分查找,一般用于查找一个有序数组中的某个值的位置或者给定的特定值的插入位置,需要的朋友可以参考下
2023-05-17

C语言二分查找法怎么用

这篇文章主要讲解了“C语言二分查找法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言二分查找法怎么用”吧!示例 1:输入: nums = [-1,0,3,5,9,12], targ
2023-06-30

详解Go语言实现线性查找算法和二分查找算法

线性查找又称顺序查找,它是查找算法中最简单的一种。二分查找,也称折半查找,相比于线性查找,它是一种效率较高的算法。本文将用Go语言实现这两个查找算法,需要的可以了解一下
2022-12-20

python二分法查找怎么使用

这篇文章主要讲解了“python二分法查找怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python二分法查找怎么使用”吧!对于要搜索的元素越多,二分查找速度比简单查找快的更多 这是
2023-06-25

Python二分查找之bisect库如何使用

本篇内容主要讲解“Python二分查找之bisect库如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python二分查找之bisect库如何使用”吧!简介bisect 库是 Python
2023-07-05

如何使用Java二分查找

这篇文章主要介绍“如何使用Java二分查找”,在日常操作中,相信很多人在如何使用Java二分查找问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Java二分查找”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-15

快速查找与二分查找算法如何在Java中实现

这期内容当中小编将会给大家带来有关快速查找与二分查找算法如何在Java中实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 快速查找:这个是相当简单的,以数组举例,就用一个for循环去查找数组中需要查
2023-05-31

python二分查找算法的递归实现方法

本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码:def binarySearch(alist, item):first = 0last = len(alist)-1fou
2022-06-04

C语言通过二分查找实现猜数字游戏

这篇文章主要为大家详细介绍了在C语言中如何通过二分查找思想编写一个简单的猜数字游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-02-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录