二分法查找介绍及实例详解

二分法检索介绍

二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,

首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功;

否则,若key小,则在字典前半部分中继续进行二分法检索;

若key大,则在字典后半部分中继续进行二分法检索。

这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。

偶数个取中间2个其中任何一个作为中间元素

二分法检索是一种效率较高的检索方法,要求字典在顺序表中按关键码排序。

代码实例

#!/usr/bin/env pythonimport sys def BinarySearch(haystack, needle):  low = 0   high = len(haystack) - 1   while(low  needle:      high = mid - 1     else:      print mid       return mid   print -1  return -1if __name__ == "__main__":  haystack = [int(i) for i in list(sys.argv[1])]  needle = int(sys.argv[2])  BinarySearch(haystack ,needle)

登录后复制

运行:

python@pythontab:~$ python BinarySearch.py 123456789 43

登录后复制

备注:

1.’__’:由于python的类成员都是公有、公开的被存取public,缺少像正统面向对象语言的私有private属性。

于是就用__来将就一下,模拟私有属性。这些__属性往往是内部使用,通常情况下不用改写。也不用读取。

加上2个下划线的目的,一是不和普通公有属性重名冲突,二是不让对象的使用者(非开发者)随意使用。

2.__name__ == “__main__”表示程序脚本是直接被执行的.

如果不等于表示脚本是被其他程序用import引入的.则其__name__属性被设为模块名

以上就是二分法查找介绍及实例详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2267046.html

(0)
上一篇 2025年2月27日 09:47:23
下一篇 2025年2月19日 22:37:44

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python之property()装饰器的使用详解

    1. 何为装饰器? 官方定义:装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用…

    编程技术 2025年2月27日
    200
  • python教程之select模块介绍

    简介 python中的select模块专注于i/o多路复用,提供了select  poll  epoll三个方法(其中后两个在linux中可用,windows仅支持select),另外也提供了kqueue方法(freebsd系统) sele…

    编程技术 2025年2月27日
    200
  • python函数之enumerate用法介绍

    enumerate函数用于遍历序列中的元素以及它们的下标。 enumerate函数说明: 函数原型:enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 …

    编程技术 2025年2月27日
    200
  • python函数之int()用法详解

    int(x, [base]) 功能: 函数的作用是将一个数字或base类型的字符串转换成整数。 函数原型: int(x=0) int(x, base=10),base缺省值为10,也就是说不指定base的值时,函数将x按十进制处理。 适用P…

    编程技术 2025年2月27日
    200
  • Python防止sql注入方法介绍

    前言 web漏洞之首莫过于sql了,不管使用哪种语言进行web后端开发,只要使用了关系型数据库,可能都会遇到sql注入攻击问题。那么在python web开发的过程中sql注入是怎么出现的呢,又是怎么去解决这个问题的? 当然,我这里并不想讨…

    编程技术 2025年2月27日
    200
  • Python装饰器之property用法详解

    @property装饰器能把一个方法变成属性一样来调用,下面我们就一起来看看python黑魔法@property装饰器的使用技巧解析 @property有什么用呢?表面看来,就是将一个方法用属性的方式来访问. 上代码,代码最清晰了. cla…

    编程技术 2025年2月27日
    200
  • python os模块使用详解

    os模块调用操作系统接口的模块                             相关方法或属性:     getcwd() — 获取当前的操作目录,等同于linux中的pwd命令。       调用:os.getcwd(…

    编程技术 2025年2月27日
    200
  • Python中关于str与repr的使用详解

    这篇文章主要介绍了python 基础教程之str和repr的详解的相关资料,主要说明他们之家的区别,通过此文希望能帮助到大家,帮助大家理解这部分内容,需要的可以参考下 Python str和repr的详解 str可以将值转化为合理的字符串形…

    编程技术 2025年2月27日
    200
  • python函数之bytearray用法详解

    bytearray([source [, encoding [, errors]]]) 中文说明: bytearray([source [, encoding [, errors]]])返回一个byte数组。bytearray类型是一个可变…

    编程技术 2025年2月27日
    200
  • python函数之bool([x])用法详解

    bool([x]) 英文说明:convert a value to a boolean, using the standard truth testing procedure. if x is false or omitted, this …

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论