二分查找 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語法遞歸

相關文章
相關標籤/搜索