递归 123456789101112 def (alist, item): """二分查找,递归""" n = len(alist) if n > 0: mid = n//2 if alist[mid] == item: return True elif item < alist[mid]: return binary_search(alist[:mid], item) else: return binary_search(alist[mid+1:], item) return False 非递归 1234567891011121314 def binary_search_2(alist, item): """二分查找, 非递归""" n = len(alist) first = 0 last = n-1 while first <= last: mid = (first + last if alist[mid] == item: return True elif item < alist[mid]: last = mid - 1 else: first = mid + 1 return False 二分查找的时间复杂度 最优情况:O(1) 最差情况O(logn) 赞微海报分享
近期评论