1.查找算法(数据结构与算法)

1.查找算法


  查找,顾名思义就是找出我们需要的数据信息。在数据库的查询领域,查询效率是非常关键的因素。比如,知识图谱中的知识存储,数据库的存储方式,制约着我们查询和推理的效率。因此,图数据库也是至关重要的卡脖子技术。关于图数据库的问题,我们在知识图谱调研时,再进行深入的探索。

  具体而言,查询算法的求解方式有两种:其一,贪心搜索的方式,其二,二分查找。

import time
def timeit(function):
	def calculate(*agrs,**kwargs):
		start_time=time.time()
		res=function(*args,**kwargs)
		end_time=time.time()
		time_diff=end_time-start_time
		print(f"{function.__name__} costs time:{time_diff}")
		return res
	return calculate

@timeit
def greedy_search(li,val):
	for idx,value in enumerate(li):
		if value==val:
			return idx
		else:
			print(f"can't find {val} in {li}")
			return None

@timeit
def binary_search(li,val):
	left_idx,right_idx=0,len(li)-1
	while left_idx<right_idx:
		mid_idx=(left_idx+right_idx)//2
		if li[mid_idx]==val:
			return mid_idx
		elif li[mid_idx]<val: # left index go right
			left_idx=mid_idx+1
		else: # right index go left
			right_idx=mid_idx-1
	else:
		print(f"can't find {val} in {li}")
		return None


if __name__=="__main__":
	li = list(range(100000))
	greedy_search(li, 387900)
	binary_search(li, 387900)
	


  我的电脑是macbook pro,经过测试运行,贪心搜索需要的时间为0.00554秒,而二分搜索的结果为6.19888秒,为什么二分搜索的性能反而不如贪心搜索算法?其实,在查找的数据量不大的时候,二分查找会浪费更多的时间在移动左右指针,而贪心查找的方式更加直接。如果我们扩大数据量,二分查找的效能可能更佳。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值