Binary search algorithm in python

前端 未结 14 1140
别那么骄傲
别那么骄傲 2020-12-01 11:23

I am trying to implement the binary search in python and have written it as follows. However, I can\'t make it stop whenever needle_element is larger than the largest elemen

14条回答
  •  伪装坚强ぢ
    2020-12-01 11:38

    It would be much better to work with a lower and upper indexes as Lasse V. Karlsen was suggesting in a comment to the question.

    This would be the code:

    def binary_search(array, target):
        lower = 0
        upper = len(array)
        while lower < upper:   # use < instead of <=
            x = lower + (upper - lower) // 2
            val = array[x]
            if target == val:
                return x
            elif target > val:
                if lower == x:   # these two are the actual lines
                    break        # you're looking for
                lower = x
            elif target < val:
                upper = x
    
    • lower < upper will stop once you have reached the smaller number (from the left side)
    • if lower == x: break will stop once you've reached the higher number (from the right side)

    Example:

    >>> binary_search([1,5,8,10], 5)   # return 1
    1
    >>> binary_search([1,5,8,10], 0)   # return None
    >>> binary_search([1,5,8,10], 15)  # return None
    

提交回复
热议问题