一、線性表的查找算法包括順序查找,折半查找和分塊查找
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)