0
点赞
收藏
分享

微信扫一扫

数据结构与算法(Python语言)----顺序查找和二分查找对比与选择


顺序查找和二分查找的对比

  • 顺序查找时间复杂度为n,二分查找时间复杂度为logn
  • 二分查找要求列表已经有序,顺序查找则对列表是否有序没有要求

顺序查找和二分查找耗时比较

import time

def cal_time(func):
def wrapper(*args,**kwargs):
t1=time.time()
result=func(*args,**kwargs)
t2=time.time()
print(f"{func.__name__} 耗时 {t2-t1} 秒")
return result
return wrapper

@cal_time
def binary_search(li,value):
left=0
right=len(li)-1
while left<=right:
mid=(left+right)//2
if li[mid]==value:
return mid
elif li[mid]<value:
left=mid+1
else:
right=mid-1
return None

@cal_time
def linear_search(li,value):
for index,val in enumerate(li):
if val==value:
return index
return None


if __name__=="__main__":
li=list(range(100000000))
index1=linear_search(li,59859000)
index2=binary_search(li,598659000)

执行结果如下:

linear_search 耗时 3.679860830307007 秒
binary_search 耗时 0.0

可以看出,当列表长度非常大时,二分查找速度非常快

顺序查找和二分查找的选择

  • 当列表已经有序了,则可以选择使用二分查找
  • 当列表无序时,如果只查找一次,则可以直接使用顺序查找,如果需要查抄多次,则可以首先将列表排序,然后再使用二分查找法查找
  • 此外,python中index方法使用的就是顺序查找


举报

相关推荐

算法与数据结构 二分查找

0 条评论