查找算法的思路及代码实现

1、顺序查找

  从前到后,顺序进行查找与关键字相符的元素。
  时间复杂度:O(n) or O(1)

def search(li,key):
    for index,i in enumerate(li):
        if i==key:
            return index
    return -1

li=[1,2,5,6,77,88]
print(search(li,6))

2、折半查找

  选择中间的元素,进行比较,每次排除一半的元素。
  折半查找的前提:列表中的元素必须是有序。
  时间复杂度:O(logn) or O(1)

def findMiddle(li,key):
    start=0
    end=len(li)-1
    while start<=end:
        mid=(start+end)//2
        if li[mid]==key:
            return mid
        elif key<li[mid]:
            # 取前半段(左)
            end=mid-1
        elif key>li[mid]:
            start=mid+1
    return -1
li=[1,2,5,6,77,88]
posted @ 2020-09-10 21:28  紫藤花下酒馆  阅读(201)  评论(0编辑  收藏  举报