查找算法

常见查找算法有七种,分别为顺序查找,二分查找,插值查找,斐波那契查找,树表查找,分块查找,哈希查找。

一般使用的是顺序查找和二分查找

顺序查找代码:

class Sequential_Search(object):
    def __init__(self, arr):
        self.arr = arr

    def search(self, val):
        for i in range(len(self.arr)):
            if self.arr[i] == val:
                return True
        return False
    
if __name__ == '__main__':
    # 顺序查找
    a = [1, 6, 3, 8, 5, 9, 2, 7, 4]
    S = Sequential_Search(a) # 利用a数组初始化一个顺序查找对象
    print(S.search(2))

二分查找需要数组为有序数组,代码如下:

class Binary_Search(object):
    def __init__(self, arr):
        self.arr = arr

    def search(self, val):
        low = 0
        high = len(self.arr)-1
        while low <= high:
            mid = (low + high)//2
            if self.arr[mid] == val:
                return True
            elif self.arr[mid] < val:
                low = mid + 1
            else:
                high = mid - 1
        return False

if __name__ == '__main__':
    # 二分查找
    b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    B = Binary_Search(b) # 利用b数组初始化一个顺序查找对象
    print(B.search(1))

posted on 2020-01-03 19:12  天池怪侠  阅读(183)  评论(0)    收藏  举报

导航