二分查找 python实现

欢迎回来 [^first blood].python

要求A是升序数组数组

递归

只能查 数据存不存在,不能返回下标markdown

def binary_find(A, m):
    if len(A) == 0:
        return -1
        
    i = int(len(A)/2)
    if A[i] == m:
        return i
    if A[i] > m and i - 1 > 0
        return binary_find(A[0:i], m)
    if A[i] < m and len(A)- (i+1) > 0
        return binary_find(A[i+1 : ], m)
        
    return -1

不用递归

可返回下标code

def binary_find(A, m):
    low = 0
    high = len(A) - 1
    
    while low <= high:
        i = int( (low + high) / 2)
        if A[i] == m:
            return i
        if A[i] > m:
            high = i - 1
        else:
            low = i + 1
        return None

[^first blood]: 俺的第一次markdown语法递归

相关文章
相关标签/搜索