1、顺序表查找
def Sequential_Search(l, key): for i in range(len(l)): if l[i] == key: return i return 0
2、有序表查找
(1)折半查找
前提:有序
def Binary_Search(l, key): low = 0 high = len(l) - 1 while low <= high: mid = (low + high) // 2 if l[mid] < key: low = mid + 1 elif l[mid] > key: high = mid - 1 else: return mid return None
(2)插值查找--对折半查找的改进
def Binary_Search(l, key): low = 0 high = len(l) - 1 while low <= high: mid = low + (high - low) * (key - l[low]) // (l[high] - l[low]) # if l[mid] < key: low = mid + 1 elif l[mid] > key: high = mid - 1 else: return mid return None红色部分为改进部分,其他与二分查找一样。