python实现二分查找算法


Posted in Python onSeptember 21, 2017

二分查找算法:简单的说,就是将一个数组先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如target,查找target在数组中的位置时,可以先找到数组中间的数array[middle]和target进行比较,当它比target小时,那么target一定是在数组的右边,反之,则target在数组的左边,比如它比target小,则下次就可以只比较[middle+1, end]的数,继续使用二分法,将它一分为二,直到找到target这个数返回或者数组全部遍历完成(target不在数组中)

优点:效率高,时间复杂度为O(logN);
缺点:数据要是有序的,顺序存储。

python的代码实现如下:

#!/usr/bin/python env
# -*- coding:utf-8 -*-

def half_search(array,target):
  low = 0
  high = len(array) - 1
  while low < high:
     mid = (low + high)/2
     if array[mid] > target:
      high = mid - 1
     elif array[mid] < target:
      low = mid + 1
     elif array[mid] == target:
      print 'I find it! It is in the position of:',mid
      return mid
     else:
      print "please contact the coder!"
  return -1



if __name__ == "__main__":
  array = [1, 2, 2, 4, 4, 5]

运行结果如下:

I find it! It is in the position of: 4
4
-1
I find it! It is in the position of: 0
0
-1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python异常学习笔记
Feb 03 Python
python实现简单ftp客户端的方法
Jun 28 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
使用python存储网页上的图片实例
May 22 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Python with标签使用方法解析
Jan 17 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
Python远程方法调用实现过程解析
Jul 28 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
分享给Python新手们的几道简单练习题
Sep 21 #Python
python验证码识别的示例代码
Sep 21 #Python
Python优先队列实现方法示例
Sep 21 #Python
python虚拟环境virtualenv的安装与使用
Sep 21 #Python
基于python socketserver框架全面解析
Sep 21 #Python
基于python select.select模块通信的实例讲解
Sep 21 #Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 #Python
You might like
php生成WAP页面
2006/10/09 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
生产班组长岗位职责
2014/01/05 职场文书
三八妇女节活动总结
2014/05/04 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS