一、线性表的查找算法包括顺序查找,折半查找和分块查找
1、折半查找
1)过程:折半查找又称二分查找,要求线性表有序。在一个有序序列中,先确定中间点的位置mid ,然后将待查的k值与中间点数据比较,若相等则查找成功并返回该位置......
2)python实现:
不递归:
#二分查找:输入一个list,待查找的item;输出待查找元素的位置
def search(list1,item):
first = 0
last = len(list1) -1
#整除,取整数部分
while first <= last:
mid = (first + last) // 2
if item < list1[mid]:
last = mid -1
elif item > list1[mid]:
first = mid+1
else:
return mid+1
return -1
递归:
def search2(lis, left, right, num):
if left > right: # 递归结束条件
return -1
mid = (left + right) // 2
if num < lis[mid]:
right = mid - 1
elif num > lis[mid]:
left = mid + 1
elif num == lis[mid]:
return mid+1
return search2(lis, left, right, num)