查找算法学习之二分查找(Python版本)——BinarySearch

8 篇文章 0 订阅
1 篇文章 0 订阅
[quote]在计算机科学中,折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。[/quote]

[list]
[*]时间复杂度:O(logn)
[*]空间复杂度:O(1)
[/list]

示例:


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

def binary_search(l,key,lo=0,hi=None):
if not hi:
hi = len(l)
while lo<hi:
mid = (lo+hi)//2
if l[mid]>key:
hi = mid-1
elif l[mid]<key:
lo = mid+1
else:
return mid
return -1

def main():
L = [1,2,3,4,5,6]
print binary_search(L,6)

if __name__=="__main__":
main()

参考资料:
http://zh.wikipedia.org/wiki/%E6%8A%98%E5%8D%8A%E6%90%9C%E7%B4%A2%E7%AE%97%E6%B3%95
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值