查找算法

顺序查找

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

你可能感兴趣的:(查找算法)