建湖网站开发,电子商务网站建设可运用的技术,电商外贸平台大全,泰州建设局网站安监站通报二分查找法#xff1a;在我的理解中这个查找方法为什么会叫二分呢#xff0c;我认为是将要查询的一个列表分成了两份#xff0c;然后在利用某个值来进行比较#xff0c;在一个不断循环的过程中来找出我们要找的某一个值。 废话不多说#xff0c;先上代码#xff1a; 1 de…二分查找法在我的理解中这个查找方法为什么会叫二分呢我认为是将要查询的一个列表分成了两份然后在利用某个值来进行比较在一个不断循环的过程中来找出我们要找的某一个值。 废话不多说先上代码 1 def twofenfind(lst, target):2 left 03 right len(lst) - 14 5 while target in lst:6 mid (left right) // 27 if target lst[mid]:8 left mid 19
10 elif target lst[mid]:
11 right mid - 1
12
13 else:
14 return mid
15 return None
16
17
18
19 print(twofenfind([1, 2, 3 ,4, 7], 3)) # 代码有些地方可能会有歧义但这也仅仅只是我个人的一些理解如有错误还请指正。 二分查找发是一个效率很高的查找法但是被查找的数据必须是有序的。 首先将待查找target值与有序列表lst[0]到lst[n - 1]的中间位置——记为mid上的结点的关键字进行比较如果相等就完成查找否则若lst[mid]target则说明待查找的数只可能在列表左边 lst[0]-lst[mid - 1]中只需要在左边的列表中进行查找若lst[mid] x则在右边的列表lst[mid 1] 到 lst[n - 1]中继续进行查找这样经过一次关键字的比较就缩小了一半的查找区间。 然后继续按照上面的方法进行查找然后知道找到关键字为target的元素或者当前查找区间为空即表明查找失败为止。 下面测试一下以查找target13为例 当中取mid的关键字和target进行比较很显然13 17所以要查找的13应该是在前半部分的所以下次查找的区间应该是在[0,5]即left的值不变仍然为0right的值变为mid - 1 5所以 mid len(right left) // 2 2(这里要进行整除) 取11和13进行比较显然13 11, 所以要查找的值应该是在11后面的所以left就变为了mid 1 right的值仍然不变取得最终的值mid 3 取mid指示的位置的关键字13和target进行比较结果相等就说明查找成功了所以target在列表中的位置即为mid所指示的位置。我是按照索引来查找的 转载于:https://www.cnblogs.com/tulintao/p/10748541.html