美文网首页
二分查找

二分查找

作者: 张义飞 | 来源:发表于2018-01-17 07:37 被阅读0次

    二分查找法

    算法复杂度:log2n
    简单查找复杂度:n

    输入,输出

    输入的是一个有序列表,一个查找的值,输出一个值的位置,可能为空。

    设计与实现

    数据结构: 数组
    查找元素的范围: array[0] <= 查找的元素 <= array[arrray.length-1]

    设计

    二分查找1.jpg

    查找范围在low和high之间
    low = 0
    high = array.length - 1

    二分查找2.jpg

    查找的值和mid比较,mid是中间值,因为数组中元素已经排过序了,mid应该是个整数,除不尽向下取整

    实现

    def binary_search(list, item):
        low = 0
        high = len(list) - 1
        while low <= high:
            mid = (low + high) / 2
            guess = list[mid]
            if guess == item: //找到了元素,返回下标
                return mid
            if guess > item: //猜的元素在左边
               high = mid - 1
            else:
                low = mid + 1 //猜的元素在右边
        return None;
    
    
    print binary_search([1,2,3,4,6,8], 4)
    

    关键点

    • 输入数据是有序列表
    • 选中间值进行比较
    • 算法复杂度log2n

    相关文章

      网友评论

          本文标题:二分查找

          本文链接:https://www.haomeiwen.com/subject/xkryoxtx.html