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实现获取网站PR及百度权重
Jan 21 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
python 实现多维数组转向量
Nov 30 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
keras的三种模型实现与区别说明
Jul 03 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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中执行系统外部命令
2006/10/09 PHP
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
小程序自定义日历效果
2018/12/29 Javascript
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
怎样使用Python脚本日志功能
2016/08/14 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python之super的使用小结
2018/08/13 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
pymysql模块的操作实例
2019/12/17 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
python exit出错原因整理
2020/08/31 Python
高中生毕业自我鉴定
2013/10/10 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
网络营销计划书
2015/01/17 职场文书
2015年营业员工作总结
2015/04/23 职场文书
活动新闻稿范文
2015/07/17 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
windows系统搭建WEB服务器详细教程
2022/08/05 Servers