欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

列表查找(顺序查找、二分查找)——python数据结构

程序员文章站 2024-03-19 15:15:34
...

列表查找

  • 输入:列表、待查找元素
  • 输出:元素下标
  • 列表内置查找函数:index()【内置采用顺序查找】
  • 时间复杂度:O(n)

顺序查找

  • (线性查找)从列表第一个元素开始,顺序进行搜索
def linear_search(list, value):
    for i, v in enumerate(list):
        if v == value:
            return i
    return None
# test
list = [1, 2, 3, 4]
index = linear_search(list, 3)
print(index)

二分查找

  • (折半查找)从有序列表的初始候选区开始,通过对待查找值与候选去中间值的比较,是查找区间每次减少一半。
  • 时间复杂度:O(log(n))
def binary_search(list, value):
    left = 0
    right = len(list) - 1
    while left <= right:
        mid = (left + right) // 2
        if list[mid] == value:
            return mid
        elif list[mid] > value:
            right = mid - 1
        else:
            left = mid + 1
    return None
# test
list = [i for i in range(1, 10)]
index = binary_search(list, 8)
print(index)
相关标签: python数据结构