二分查找递归:寻找列表中元素首次出现的位置,元素会重复,当找不到时返回None。使用二分查找可以大量减少时间与访问列表的次数。(如果自己想这是个非常痛苦的过程,所以想给别人分享一下)
实现方法:使用函数定义。
设定默认值: l是列表,x是目标元素,i=0, k=len(l)
首先定义函数 def search (l,x,i,k)
主要的思路是先得到列表的中间位置的值再来判断目标元素的大概位置
例如:100可以分为 0-50 和 50-100。
然后递归判断,目标元素是在0-25,25-50,50-75,还是75-100。
通过不断改变中间值来慢慢靠近目标元素位置是二分查找的关键。
而列表元素可能会重复,所以当每次得到l[mid]=x时,也要继续向前找看看是否存在更前的位置