Python-二分法查找

2018-06-18 02:20:52来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

#!/usr/bin/env python
#_*_ coding:utf-8 _*_  
#encoding=utf-8
#function:实现二分法查找的方法
#created by xkq
#date: 2018
def BinarySearch_1(data_source,find):#方法一
    mid = int(len(data_source) / 2)
    if len(data_source)>1:
        if data_source[mid]>find:
            #print(data_source[:mid])
            #print("on the left of %s"%data_source[mid])
            BinarySearch_1(data_source[:mid],find)
        elif data_source[mid]<find:
            #print(data_source[mid:])
            #print("on the right of %s" % data_source[mid])
            BinarySearch_1(data_source[mid:], find)
        else:
            print("find:%s"%data_source[mid])
    elif len(data_source)==1:
        if data_source[mid]==find:
            print("find:%s" % data_source[mid])
        else:
            print("no find")

def BinarySearch(data_source,find):#方法二
    low=0#列表起始位置
    height=len(data_source)-1#列表结束位置
    while low<=height:
        mid=int((low+height)/2)#列表中间位置
        if data_source[mid]<find:
            low=mid+1
        elif data_source[mid]>find:
            height=mid-1
        else:
            print( "find %s in list[%s]"%(data_source[mid],mid))#返回查找到的数和位置
            return
    else:
        print("no find %s"%find)
if __name__=='__main__':
    data=list(range(1,30000000,3))#创建数字列表
    BinarySearch_1(data,91)#方法一调用
    BinarySearch(data,91)#方法二调用

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:pip显示网络不可达错误解决

下一篇:python之文件操作