python实现二分查找算法


Posted in Python onSeptember 18, 2020

介绍

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

前提

必须待查找的序列有序

时间复杂度

O(log2n)

原理

1)确定该期间的中间位置K

2)将查找的值t与array[k]比较,若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。

3)区域确定过程:

若array[k]>t,由于数组有序,所以array[k,k+1,……,high]>t;故新的区间为array[low, ..., K-1];
反之,若array[k]<t对应查找区间为array[k+1, ..., high]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date  : 2020-07-10
# @Author : 流柯
# @desc : 二分查找算法,python版

def serach(array, t):
  array.sort() #排序,保证列表是有序的
  low = 0
  height = len(array) - 1
  while low <= height:
    k = (low + height) // 2
    if array[k] < t:
      low = k + 1
    elif array[k] > t:
      height = k - 1
    else:
      return k #找到后返回位置
  return -1 #找不到返回-1
array = [1, 3, 5, 7, 9, 6, 8, 0]
print(serach(array, 5))

以上就是python实现二分查找算法的详细内容,更多关于python 二分查找算法的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
Python使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
Python正则表达式常用函数总结
Jun 24 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
Django框架实现逆向解析url的方法
Jul 04 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
linux下python中文乱码解决方案详解
Aug 28 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
Python自定义sorted排序实现方法详解
Sep 18 #Python
python爬虫爬取网页数据并解析数据
Sep 18 #Python
Python实现迪杰斯特拉算法过程解析
Sep 18 #Python
Python 操作 MySQL数据库
Sep 18 #Python
python实现人工蜂群算法
Sep 18 #Python
Python猫眼电影最近上映的电影票房信息
Sep 18 #Python
python实现简单遗传算法
Sep 18 #Python
You might like
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
gearman的安装启动及python API使用实例
2014/07/08 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python实现代码块儿折叠
2020/04/15 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Django websocket原理及功能实现代码
2020/11/14 Python
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
周年庆促销方案
2014/03/15 职场文书
爱祖国演讲稿
2014/05/04 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
拾金不昧感谢信
2015/01/21 职场文书
行政处罚事先告知书
2015/07/01 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL