首页 > 编程语言 > 详细

算法与数据结构3之查找

时间:2021-04-19 14:37:40      阅读:11      评论:0      收藏:0      [点我收藏+]

1.顺序查找(Linear Search)

顺序查找:也叫线性查找,从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。

def linear_search(li,val):  # 一个列表 一个待查找元素
for ind,v in enumerate(li):
if v == val:
return ind
else:
return None

2.二分查找(列表有序)

def binary_search(li,val):
left = 0
right = len(li) -1
while left <= right: # 候选区域
mid = (left + right) // 2
if li[mid] == val:
return mid
elif li[mid] > val: # 待查找的值在mid左侧
right = mid - 1
else: # li(mid) < val 待查找的值在mid右侧
left = mid + 1
else:
return None

li = [1,2,3,4,5,6,7,8,9]
print(binary_search(li,3))

‘‘‘
时间复杂度O(logn)
‘‘‘

3.顺序查找与二分查找的比较

# cal_time.py文件代码
import time
def cal_time(func):
def wrapper(*args,**kwargs):
t1 = time.time()
res = func(*args,**kwargs)
t2 = time.time()
print("%s runing time:%s secs."%(func.__name__,t2 - t1))
return res
return wrapper
###############  比较  ########################
from
cal_time import * @cal_time def linear_search(li,val): # 一个列表 一个待查找元素 for ind,v in enumerate(li): if v == val: return ind else: return None @cal_time def binary_search(li,val): left = 0 right = len(li) -1 while left <= right: # 候选区域 mid = (left + right) // 2 if li[mid] == val: return mid elif li[mid] > val: # 待查找的值在mid左侧 right = mid - 1 else: # li(mid) < val 待查找的值在mid右侧 left = mid + 1 else: return None li = list(range(100000000)) linear_search(li,38900000) binary_search(li,38900000)

 

算法与数据结构3之查找

原文:https://www.cnblogs.com/wangxudong1/p/14676402.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!