• 技术文章 >后端开发 >Python教程

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

    巴扎黑巴扎黑2017-08-16 13:30:01原创2542

    二分法检索介绍

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

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

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

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

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

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

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

    代码实例:

    #!/usr/bin/env python
    import sys 
    def BinarySearch(haystack, needle):
      low = 0 
      high = len(haystack) - 1 
      while(low <= high):
        mid = (low + high)/2
        midval = haystack[mid]
        if midval < needle:
          low = mid + 1 
        elif midval > needle:
          high = mid - 1 
        else:
          print mid 
          return mid 
      print -1
      return -1
    if __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 4
    3

    备注:

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

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

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

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

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

    php入门到就业线上直播课:查看学习

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:详解 实例 介绍
    上一篇:Python中的字典容器深度讲解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• Python NumPy教程之数据类型对象• 使用Python处理KNN分类算法• Python标准库中的logging用法示例• 详解Python中的条件判断语句• python发腾讯微博代码分享
    1/1

    PHP中文网