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错误处理详解
Sep 28 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
人工智能最火编程语言 Python大战Java!
Nov 13 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
python清空命令行方式
Jan 13 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
Elasticsearch 索引操作和增删改查
Apr 19 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
图解上海144收音机
2021/03/02 无线电
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php 购物车实例(申精)
2009/05/11 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
PHP代码加密的方法总结
2020/03/13 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
python在文本开头插入一行的实例
2018/05/02 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Python socket 套接字实现通信详解
2019/08/27 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
高二生物教学反思
2014/01/27 职场文书
员工拓展培训方案
2014/02/15 职场文书
道德模范事迹材料
2014/12/20 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
坎儿井导游词
2015/02/09 职场文书
法务专员岗位职责
2015/02/14 职场文书