题目描述:给定一个0-n的排序数组,有可能存在重复,找到某个值,并且找到该值出现的第一个位置。
例如:1,1,2,2,3,3。找到2出现的第一个位置为2.
def bi_search(alist,item):
if len(alist)<0:
return
left = 0
right = len(alist)-1
while left + 1< right:
mid = (left + right)//2
if alist[mid] > item:
right =mid
if alist[mid] < item:
left =mid
else:
right =mid
#结束循环的时候,left,right左右分布,或者是在同一个位置。
#兜底程序,找的是第一个出现的地方,要先判断left,在判断right
if alist[left]==item:
return left
if alist[right]==item;
return right
本文详细介绍了二分查找算法在排序数组中查找特定值并定位其首次出现位置的方法。通过具体示例,如在1,1,2,2,3,3这样的数组中查找2的首个位置,阐述了算法实现过程。
2044

被折叠的 条评论
为什么被折叠?



