算法学习笔记一一二分查找

什么是二分查找

二分查找也叫折半查找,是在有序数组查找特定元素的算法。算法的时间复杂度为O(logn)。

算法原理

  1. 定义一个有序数组, 初始化left数组第一个元素序号,right为数组最后一个元素序号,middle为left和right中间元素序号。
  2. 首先将要查找的元素val与list[middle]比较,若相等返回middle。
  3. 若val大于list[middle],则说明要查找的元素在middle右半边,对右半部分进行查找。left = middle + 1
  4. 若val小于list[middle],则说明要查找的元素在middle左半边,对左半部分进行查找。right = middle + 1
  5. 重复上述步骤,知道left < right (查找失败,数组中无此元素)。

示例代码(python)

def binary_search(list, val):
    left = 0 # 数组的第一个元素
    right = len(list) - 1 # 数组的最后一个元素

    while left <= right:
        middle = (left + right) // 2 # 向下取整
        if val == list[middle]:
            return middle
        elif val > list[middle]:
            left = middle + 1
        elif val < list[middle]:
            right = middle - 1
    return -1
posted @ 2023-12-14 21:53  Monster_bird  阅读(39)  评论(0)    收藏  举报