Python实现顺序查找、二分查找

顺序查找

从待查找数据的第一个元素开始,逐个将每个元素与要查找的数据值进行对比,如果比较到两者相同,则查找成功;如果一直到最后都未找到,则查找失败。

# 顺序查找

# 待查找数据集合 value
# 查找的值 key
def linear(value,key):
	for i in range(len(value)):
		if value[i] == key:
			# 成功,返回下标值
			return i
	# 失败,返回-1
	return -1


values = [9,1,11,3,2,6,7,5,8,13,4,10,12]
# 查找 7
result = linear(values,7)
if result == -1:
	print('查找失败')
else:
	print('查找成功,对应下标为',result)

---------- 运行 ----------
查找成功,对应下标为 6

二分查找

找出“有序数据”中的中间元素,有中间元素值将元数据分为两个字表,然后根据指定查找值与中间元素的大小关系进行比对,若相对,则查找成功,若查找值小于中间元素,则在左侧子表中继续查找;若查找值大于中间元素,则在右侧子表中继续查找。如此递归查找下去,直接查找成功或查找完整个数据集合为止(折半查找)

# 二分查找

# 待查找数据集合 - 》 value
# 要查找的数值 - 》key
# 限定查找范围的左侧元素下标值 - left
# 限定查找范围的右侧元素下标值 - right
def binary(value,key,left,right):
	if left > right:
		# 查找失败
		return -1
	middle = (left+right)//2
	if value[middle] < key:
		left = middle + 1
		return binary(value,key,left,right)
	elif value[middle] > key:
		right = middle - 1
		return binary(value,key,left,right)
	else:
		return middle

values = [3,9,10,12,25,34,45,56,67,76,84,99]
result = binary(values,25,0,len(values)-1)
if result == -1:
	print('查找失败')
else:
	print('查找成功,对应下标为',result)

---------- 运行 ----------
查找成功,对应下标为 6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值