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 文件操作实现代码
Oct 07 Python
python发送arp欺骗攻击代码分析
Jan 16 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
python实现xlsx文件分析详解
Jan 02 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
python匿名函数用法实例分析
Aug 03 Python
如何获取Python简单for循环索引
Nov 21 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
python 基于opencv实现高斯平滑
Dec 18 Python
学会Python数据可视化必须尝试这7个库
Jun 16 Python
Django框架中视图的用法
Jun 10 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开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php事件驱动化设计详解
2016/11/10 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python批量获取html内body内容的实例
2019/01/02 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
如何手工释放资源
2013/12/15 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
交通安全教育心得体会
2016/01/15 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
React配置子路由的实现
2021/06/03 Javascript