Python数据结构与算法-二分法查找

**

二分查找:

**
又叫折半查找,从有序列表的初始候选区list1[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半
从列表中查找元素3:
在这里插入图片描述
这里的left与right为双指针

  1. 排好序,找出中间值mid=(left+right)/2
  2. mid与val进行比较,如果mid>val,则此时的搜索范围(left,mid),然后移动right,让right=mid-1
  3. 之后就可以循环啦,计算新的mid,用新mid与val进行比较,以此类推。

接下来写入测试代码

def binary_search(list1,val):
	left = 0
	right = len(list1)-1 #left/right/mid这里所写的均为索引
	while left <= right:
		mid = (left + right)
		if list[mid] == val:
			return mid
		elif list[mid] > val:
			right = mid - 1
		else:
			left = mid + 1
	else:
		return None

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

问题一:

=赋值符号,代表将符号右边的值赋给左边的变量
==是判断符号前后的逻辑运算符
eg:if (a==10):,代表如果a等于10的话执行if语句后的语句

问题二:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值