Python - Dichotomy(二分法)

版权声明:转载请注明出处 https://blog.csdn.net/qq_42292831/article/details/89340007
#Dichotomy

def SearchData_Recursion(repository,data):
        repository.sort()
        n = len(repository)
        if n<1:
            return False
        mid = n//2
        if repository[mid]>data:
            return SearchData(repository[0:mid],data)
        elif repository[mid]<data:
            return SearchData(repository[mid+1:],data)
        else:
            return True
        
        
def SearchData(repository,data):
    repository.sort()
    n = len(repository)
    first = 0
    last = n-1
    while first<=last:
        mid = (last+first)//2
        if repository[mid]>data:
            last = mid-1
        elif repository[mid]<data:
            first = mid+1
        else:
            return True
    return False

        
if __name__ == "__main__":
    repository = [1,2,3,4,5,8,4,6,2,1,4,6,3,12]
    data = 12
    if SearchData(repository,data):
        print("PASS")
    else:
        print("MISS")

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/89340007