python二分法实现实例

时间:2023-02-16 05:09:46 

1.算法:(设查找的数组期间为array[low, high])

(1)确定该期间的中间位置K
(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:
a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]
b.array[k]<T 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。

2.python代码:


#!/usr/bin/python
# -*- coding: utf-8 -*-

def BinarySearch(array,t):
    low = 0
    height = len(array)-1
    while low < height:
        mid = (low+height)/2
        if array[mid] < t:
            low = mid + 1

        elif array[mid] > t:
            height = mid - 1

        else:
            return array[mid]

    return -1


if __name__ == "__main__":
    print BinarySearch([1,2,3,34,56,57,78,87],57)

结果:57

3.时间复杂度:O(log2n);

注意:二分查找的前提必须待查找的序列有序。

标签:二分法
0
投稿

猜你喜欢

  • Python redis模块的使用教程指南

    2021-03-22 12:08:02
  • vue-cli3项目升级到vue-cli4 的方法总结

    2024-04-27 15:48:50
  • 基于Python绘制3D立体爱心图案的示例详解

    2021-04-03 18:05:09
  • MySQL与PHP的基础与应用专题之创建数据库表

    2023-11-21 04:12:28
  • Golang接口型函数使用小结

    2024-05-08 10:14:53
  • 详解运行Python的神器Jupyter Notebook

    2022-01-20 13:21:56
  • python文件和目录操作函数小结

    2022-02-21 21:45:23
  • python面向对象入门教程之从代码复用开始(一)

    2022-07-17 21:54:13
  • Pandas:Series和DataFrame删除指定轴上数据的方法

    2022-12-22 12:49:26
  • ASP程序中调用函数Now()显示上午下午的问题

    2009-08-27 13:09:00
  • Deepin20安装开发环境的超详细教程

    2023-12-16 20:05:41
  • python字符串判断密码强弱

    2021-05-09 04:20:04
  • Python实现将Word表格嵌入到Excel中

    2022-02-10 06:21:49
  • 用Python实现插值算法

    2021-07-16 11:01:22
  • 用JS开发页面动画效果时的一个设计思路

    2008-02-03 15:12:00
  • pandas ix &iloc &loc的区别

    2023-03-12 16:31:54
  • Python中unittest用法实例

    2023-09-02 13:13:45
  • sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期

    2024-01-24 15:34:17
  • Python实现基于POS算法的区块链

    2023-10-30 01:47:19
  • python写的ARP攻击代码实例

    2023-05-23 19:45:46
  • asp之家 网络编程 m.aspxhome.com