C1imber's Blog

python有序二分查找算法

字数统计: 490阅读时长: 1 min
2018/06/04 Share

python有序二分查找算法

感觉自己的博客更新的很慢,看到自己博客不更新文章的话总会很焦虑,因为总想写点有意义的技术文章,但是想了想,博客本来就是一个记录知识的地方,将自己学习的过程记录下来也是个不错的选择,即使是一个小知识点也值得记录,以便以后不会忘记,所以以后博客的更新次数应该会很频繁,博客的日志是时候该充实一下了。写给自己,迷茫的时候多研究点知识,多写博客总结,知识需要不断沉淀

记录一个用python写SQL盲注脚本时需要用到的一个算法,在使用盲注的技术去判断数据库的内容时,使用二分法可以加快查找速度,相比于自加的判断可以减少所发送的http请求

二分查找算法代码

首先需要给定一个查找的范围,也就是区域。其次要求被查找的列表是有序的,贴出代码

#coding=utf-8
def binary_search(sealist,find):
    low=0
    high=len(sealist)
    while low<=high:
        mid=(low+high)/2
        if find==sealist[mid]:
            return mid
        elif find<sealist[mid]:
            high=mid-1
        elif find>sealist[mid]:
            low=mid+1
        else:
            return -1
sealist=range(0,1000)
find=input("please input a number:")
result=binary_search(sealist,find)
if result>=0:
    print "Catch Element %s!    Position:%s!"%(str(find),str(result+1))
else:
    print "Sorry,The Element Not Found."

利用二分法通过不断地缩小查找区域最终锁定查找的内容,二分法相比于普通的循环自增查找,查找次数减少了很多,速度自然提升了不少。举个例子,如果采用自增查找的方式,在0-1000列表中查找到100的位置需要101次,但是上面的代码利用了有序二分查找到100的位置只需要7次
mark

CATALOG
  1. 1. python有序二分查找算法
    1. 1.0.1. 二分查找算法代码