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对url格式解析的方法
May 13 Python
Python中Continue语句的用法的举例详解
May 14 Python
深入理解python中的select模块
Apr 23 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
python复制文件到指定目录的实例
Apr 27 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
Python列表解析配合if else的方法
Jun 23 Python
Python并行分布式框架Celery详解
Oct 15 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
Python tkinter实现日期选择器
Feb 22 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
VuePress 快速踩坑小结
2019/02/14 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
Python实现截屏的函数
2015/07/25 Python
星球大战与Python之间的那些事
2016/01/07 Python
Django添加feeds功能的示例
2018/08/07 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python列表list操作相关知识小结
2020/01/29 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
高三自我评价
2014/02/01 职场文书
党支部活动策划方案
2014/08/18 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
国防教育标语
2014/10/08 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS