列表查找的兩種方法
阿新 • • 發佈:2019-05-04
binary 進行 def 元素 == bsp return 對待 一個
列表查找:從列表中查找指定元素
輸入:列表、待查找元素
輸出:元素下標或未找到元素
列表查找的兩種方法:
- 順序查找
- 從列表的第一個元素開始,順序進行搜索,直到找到為止。
- 二分查找
- (大前提有序)從有序列表的候選區[0:n]開始,通過對待查找的值與候選區中間值的比較,可以使候選區減少一半。
1.順序查找代碼:(時間復雜度為O(n))
def linear_search(data_set, value): for i in range(len(data_set)): if value == data_set[i]:return i return
2.二分查找代碼:(時間復雜度為O(logn))
def binary_search(data_set, low, high, val): while low <= high: mid = (low + high) // 2 if data_set[mid] == val: return mid elif val > data_set[mid]: # 值在列表右邊 low = mid + 1 else: # 值在列表左邊 high = mid -1 return
遞歸版本的二分查找
def binary_search2(data_set, low, high, val): if low <= high: mid = (low+high) // 2 if data_set[mid] == val: return mid elif val < data_set[mid]: binary_search2(data_set, low, mid-1, val) else: binary_search2(data_set, mid+1, high, val) else: return
列表查找的兩種方法