Python二分法
二分法
尽管二分搜索通常优于顺序搜索,但当n较小时,排序引起的额外开销可能并不划算。实际上应该始终考虑,为了提高搜索效率,额外排序是否值得。如果排序一次后能够搜索多次,那么排序的开销不值一提。然而,对于大型列表而言,只排序一次也会有昂贵的计算成本,因此从头进行顺序搜索可能是更好的选择。
#二分法 def binarySearch(baseList: list, item: int) -> bool: first = 0 end = len(baseList)-1 found = False while first <= end and not found: mid = (first + end) // 2 if baseList[mid] == item: found = True else: if item < baseList[mid]: end = mid -1 else: first = mid +1 return found #递归二分法 def binaryS(baseList: list, item: int) -> bool: if len(baseList) == 0: return False else: if baseList[(mid := len(baseList) //2)] == item: return True else: if item < baseList[mid]: return binaryS(baseList[:mid],item) else: return binaryS(baseList[mid+1:],item)
作者: yetangjian
出处: https://www.cnblogs.com/yetangjian/p/16152979.html
关于作者: yetangjian
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(yetangjian@outlook.com)咨询.