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 相关文章推荐
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
关于Django外键赋值问题详解
Aug 13 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
Python基础教程之利用期物处理并发
Mar 29 Python
《与孩子一起学编程》python自测题
May 27 Python
python得到电脑的开机时间方法
Oct 15 Python
python 文件查找及内容匹配方法
Oct 25 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
python SocketServer源码深入解读
Sep 17 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获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
php中请求url的五种方法总结
2017/07/13 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python执行使用shell命令方法分享
2017/11/08 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
北京大学自荐信范文
2014/01/28 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
推广普通话的宣传语
2015/07/13 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android