python实现二分查找算法

 更新时间:2020年09月18日 15:46:47   作者:流柯  
这篇文章主要介绍了python如何实现二分查找算法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下。

介绍

二分查找也称折半查找(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 GUI之tkinter窗口视窗教程大集合(推荐)

    Python GUI之tkinter窗口视窗教程大集合(推荐)

    这篇文章主要介绍了Python GUI之tkinter窗口视窗教程大集合,看这一篇教程足了,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 简述python四种分词工具,盘点哪个更好用?

    简述python四种分词工具,盘点哪个更好用?

    这篇文章主要介绍了python四种分词工具的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • python多进程读图提取特征存npy

    python多进程读图提取特征存npy

    这篇文章主要为大家详细介绍了python多进程读图提取特征存npy,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • python如何读取.mtx文件

    python如何读取.mtx文件

    这篇文章主要介绍了python读取.mtx文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 最新解决'nvidia-smi' 不是内部或外部命令也不是可运行的程序

    最新解决'nvidia-smi' 不是内部或外部命令也不是可运行的程序

    使用cmd查看电脑显卡的信息,调用nvidia-smi查看显卡使用情况报错,提示'nvidia-smi' 不是内部或外部命令,也不是可运行的程序,本文给大家分享完美解决方案,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • python中time.ctime()实例用法

    python中time.ctime()实例用法

    在本篇内容里小编给大家整理的是一篇关于python中time.ctime()实例用法内容,有兴趣的朋友们可以跟着学习参考下。
    2021-02-02
  • Python 异常的捕获、异常的传递与主动抛出异常操作示例

    Python 异常的捕获、异常的传递与主动抛出异常操作示例

    这篇文章主要介绍了Python 异常的捕获、异常的传递与主动抛出异常操作,结合实例形式详细分析了Python针对异常捕获、传递、处理等常见操作技巧,需要的朋友可以参考下
    2019-09-09
  • 利用Python半自动化生成Nessus报告的方法

    利用Python半自动化生成Nessus报告的方法

    这篇文章主要介绍了利用Python半自动化生成Nessus报告的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • pytest接口自动化测试框架搭建的全过程

    pytest接口自动化测试框架搭建的全过程

    pytest是Python的一种单元测试框架,可用来组织用例执行,用例断言,下面这篇文章主要给大家介绍了关于pytest接口自动化测试框架搭建的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python之Web框架Django项目搭建全过程

    Python之Web框架Django项目搭建全过程

    这篇文章主要介绍了Python之Web框架Django项目搭建全过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论