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