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获得一个月有多少天的方法
Jun 04 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
新手常见6种的python报错及解决方法
Mar 09 Python
python实现输入数字的连续加减方法
Jun 22 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
浅述python2与python3的简单区别
Sep 19 Python
python编写猜数字小游戏
Oct 06 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
8种常用的Python工具
Aug 05 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 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
新闻分类录入、显示系统
2006/10/09 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
Django admin美化插件suit使用示例
2017/12/12 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
python实现随机漫步算法
2018/08/27 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python程序 创建多线程过程详解
2019/09/23 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
酒后驾驶检讨书
2014/01/27 职场文书
教师简历自我评价
2014/02/03 职场文书
十一酒店活动方案
2014/02/20 职场文书
元旦获奖感言
2014/03/08 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
优秀团支部申报材料
2014/12/26 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2016新春团拜会致辞
2015/08/01 职场文书