顺序查找
1.顺序查找: 顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于给定值的结点,表示查找失败。
def line_search(data, num):
for index, val in enumerate(data):
if val == num:
return index
return None
二分法查找
2.二分法查找: 分法查找又称折半查找。二分法查找是在一个有序列表的基础上完成的,要查找的值x和列表的中间值m作比较,如果x大于m,那么接下来从m+1的右区间内再以相同方法取中间值做判断,循环往复此过程,直到判断出x=m的时候就是查找成功。否则相反。返回类型为布尔值
def binary_seach(data, num):
left = 0
right = len(data) - 1
while left <= right:
mid = (left + right) // 2
if data[mid] == num:
return mid
elif data[mid] > num:
right = mid - 1
else:
left = mid + 1
return None
def binary_search(alist, item):
"""二分查找,递归"""
n = len(alist)
if n > 0:
mid = n//2
if alist[mid] == item:
return True
elif item < alist[mid]:
return binary_search(alist[:mid], item)
else:
return binary_search(alist[mid+1:], item)
return False