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 21 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
Python 判断奇数偶数的方法
Dec 20 Python
利用python计算时间差(返回天数)
Sep 07 Python
flask框架自定义url转换器操作详解
Jan 25 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
Python Matplotlib绘制动画的代码详解
May 30 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框架排名
2013/07/04 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php 启动报错如何解决
2014/01/17 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php递归函数怎么用才有效
2018/02/24 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
从vue源码看props的用法
2019/01/09 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
django站点管理详解
2017/12/12 Python
python删除服务器文件代码示例
2018/02/09 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python ATM功能实现代码实例
2020/03/19 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
pytorch简介
2020/11/11 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
《植树问题》教学反思
2016/03/03 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server