1.1 查找的概念
在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
列表查找(线性表查找):从列表中查找指定元素
- 输入:列表、待查找元素
- 输出:元素下标(未找到元素时一般返回None或者-1)
内置列表查找函数:index(),这个一定是顺序查找
1.2 顺序查找(Linear Search)
顺序查找也叫线性查找,从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。(从头找到尾)
# 顺序查找
def linear_search(list1, x):
# numerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
for idx, value in enumerate(list1):
# 搜寻元素,判断是否找到了要搜寻的元素
if value == x:
return idx # 找到了返回下idx
else:
return None # 没找到
1.3 折半查找(Binary Search)
二分查找又叫折半查找。从有序列表的初始候选区list1[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。
# 二分查找(折半查找)
def binary_search(list1, x):
left = 0
right = len(list1) - 1
# 证明候选区有值
while left <= right:
mid = (left + right) // 2 # //为向下取整
if list1[mid] == x:
return mid
# 证明要找的数在mid的左侧
elif list1[mid] > x:
right = mid - 1
else: # list1[mid] < x,待查找的值在mid右侧
left = mid + 1
else:
return None
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(binary_search(list1, 3))
文章介绍了两种主要的查找方法:顺序查找(LinearSearch),从列表开始逐个比较直到找到元素或搜索完整个列表;以及二分查找(BinarySearch),适用于有序列表,通过比较中间值缩小查找范围,效率高于顺序查找。
3380

被折叠的 条评论
为什么被折叠?



