Python 二进制搜索不检查中间值
因此,我试图编写一个迭代二进制搜索程序,它不会将值与半中间索引进行比较,直到下限-上限为什么不简单地使用集合? 在集合上计算交点应该比在列表上更有效,因为不需要循环 如果您的输入是:Python 二进制搜索不检查中间值,python,Python,因此,我试图编写一个迭代二进制搜索程序,它不会将值与半中间索引进行比较,直到下限-上限为什么不简单地使用集合? 在集合上计算交点应该比在列表上更有效,因为不需要循环 如果您的输入是: first_list = [1,3,5,7,9] second_list = [0,3,6,9] 您的输出可以是: found_set = set(first_list).intersection(set(second_list)) print(found_set) output: set([9, 3]) 然
first_list = [1,3,5,7,9]
second_list = [0,3,6,9]
您的输出可以是:
found_set = set(first_list).intersection(set(second_list))
print(found_set)
output: set([9, 3])
然后,您可以像使用find_列表一样迭代find_集
注意集合元素是唯一的,所以第一个列表中的重复元素在找到的集合中只出现一次
打字错误:上界=第二个基因组-1
我假设这应该是:上界=lensecond\u list-1
问题:尽量减少项目的比较
我不认为这样做有什么好处。
您的代码使用6个比较,默认二进制搜索使用4个比较。
重新考虑你的方法
问题:。。。找到的列表似乎总是只打印一个值。
如果我在第一个列表中的第二个列表中添加一个值,它不会显示在列表中
这是因为中间不会迭代:
数据:
输出:
found_set = set(first_list).intersection(set(second_list))
print(found_set)
output: set([9, 3])
first_list = [1, 2, 3, 4, 5, 6]
second_list = [3,4,5]
second_list[1](4) == 1 l/u:-1
second_list[1](4) == 2 l/u:-1
second_list[1](4) == 3 l/u:-1
second_list[1](4) == 4 l/u:-1
second_list[1](4) == 5 l/u:-1
second_list[1](4) == 6 l/u:-1
list_found:[4]