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实现测试磁盘性能的方法
Mar 12 Python
python timestamp和datetime之间转换详解
Dec 11 Python
Python堆排序原理与实现方法详解
May 11 Python
python实现飞机大战微信小游戏
Mar 21 Python
对python产生随机的二维数组实例详解
Dec 13 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
python基础详解之if循环语句
Apr 24 Python
Python内置数据结构列表与元组示例详解
Aug 04 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字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP Include文件实例讲解
2019/02/15 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
js jquery数组介绍
2012/07/15 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
vue中activated的用法
2021/01/03 Vue.js
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
入党推优材料
2014/06/02 职场文书
自主招生自荐信格式
2015/03/04 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
中小企业员工手册范本
2015/05/14 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
matlab xlabel位置的设置方式
2021/05/21 Python