算法之查找

1. 查找

给定一个指定元素和列表,从列表中查找出指定元素

  • 输入:列表、待查找元素
  • 输出:元素下标

2. 顺序查找

从第一个元素顺序进行搜索,直到找到该元素或者最后一个元素为止
时间复杂度:O(n)

def linear_search(li, val):
    for ind, v in enumerate(li):
        if v == val:
            return ind
    else:
        return None

3. 二分查找

通过比较待查找的值与候选区中间值,值候选区减少一半
必须是有序列表
时间复杂度:O(logn)

def binary_search(li, val):
    left = 0
    right = len(li) - 1
    while left <= right:  # 候选区有值
        mid = (left + right) // 2
        if mid == val:
            return mid
        elif li[mid] > val:  # 待查找的值在mid的左侧
            right = mid - 1
        else:  # 待查找的值在mid的右侧
            left = mid + 1
    else:
        return None
posted @ 2019-04-22 15:15  球球-Ball  阅读(127)  评论(0编辑  收藏  举报