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利用多进程将大量数据放入有限内存的教程
Apr 01 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
详解python的argpare和click模块小结
Mar 31 Python
python os模块简单应用示例
May 23 Python
使用pip安装python库的多种方式
Jul 31 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
python实现TCP文件传输
Mar 20 Python
Python基础之元类详解
Apr 29 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 session安全问题分析
2011/06/24 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python3 元组tuple入门基础
2020/02/09 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
韩国现代百货官网:Hmall
2018/03/21 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
主管职责范文
2013/11/09 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
演讲稿开场白台词
2014/08/25 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
高中运动会广播稿
2014/09/16 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
后进生评语大全
2015/01/04 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记