一、介绍
顺序查找
从列表第一个元素开始,顺序进行搜索,直到找到为止。
二分查找
从有序列表的候选区data[0:n]开始,通过对待查找的值与
候选区中间值的比较,可以使候选区减少一半。
二、图示
三、代码实现
li=[1,2,3,4,5,6,7,8,9]
方式一:时间复杂度 O(n)
def linear_search(data_set, value):
for i in range(len(data_set)):
if data_set[i] == value:
return i
return -1
print(linear_search(li,9)) # 8
方式二:时间复杂度 O(logn)
def bin_search(data_set, value):
low = 0
high = len(data_set) - 1
while low <= high:
mid = (low+high)//2
if data_set[mid] == value:
return mid
elif data_set[mid] > value:
high = mid - 1
else:
low = mid + 1
print(bin_search(li,8)) # 7
方式三:递归方式
def linear_search(li,left,right,val):
if left <= right:
mid = (left + right) // 2
if li[mid]==val:
return mid
elif li[mid]<val:
return linear_search(li,mid+1,right,val)
else:
return linear_search(li,left,mid-1,val)
else:
return -1
print(linear_search(li,8)) # 7