**
二分查找:
**
又叫折半查找,从有序列表的初始候选区list1[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半
从列表中查找元素3:
这里的left与right为双指针
- 排好序,找出中间值mid=(left+right)/2
- mid与val进行比较,如果mid>val,则此时的搜索范围(left,mid),然后移动right,让right=mid-1
- 之后就可以循环啦,计算新的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语句后的语句
问题二: