banchan86
5/23/2017 - 12:36 PM

Binary Search v1 (Passing True or False if found) has both iterative and recursive functions

Binary Search v1 (Passing True or False if found) has both iterative and recursive functions


def iter_binary_search(ordered_list, lower, upper, item):
    """
    Iterative version of binary search
    Test whether item is in ordered_list[lower:upper]
    """

    while lower + 1 < upper:
        mid = (lower + upper) / 2        
        if item < ordered_list[mid]:
            upper = mid
        else:
            lower = mid            
    return item == ordered_list[lower]


def rec1_binary_search(ordered_list, item):
    """
    Recursively check whether item lies in non-empty ordered_list
    """

    if len(ordered_list) == 1:
        return item == ordered_list[0]    
    mid = len(ordered_list) / 2
    if item < ordered_list[mid]:
        return rec1_binary_search(ordered_list[: mid], item)
    else:
        return rec1_binary_search(ordered_list[mid :], item)