列表查找(顺序查找、二分查找)——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)
下一篇: redis未授权访问漏洞学习