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牛刀小试密码爆破
Feb 03 Python
使用python提取html文件中的特定数据的实现代码
Mar 24 Python
python选择排序算法的实现代码
Nov 21 Python
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
python在文本开头插入一行的实例
May 02 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Django中的模型类设计及展示示例详解
May 29 Python
python进行二次方程式计算的实例讲解
Dec 06 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
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
php递归函数怎么用才有效
2018/02/24 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Django中的CBV和FBV示例介绍
2018/02/25 Python
对Python函数设计规范详解
2019/07/19 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
python中使用np.delete()的实例方法
2021/02/01 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
《小池塘》教学反思
2014/02/28 职场文书
中国入世承诺
2014/04/01 职场文书
活动总结范文
2014/08/30 职场文书
2015年技术员工作总结
2015/04/10 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
浅谈Python类的单继承相关知识
2021/05/12 Python
Python上下文管理器Content Manager
2021/06/26 Python
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript