二分法查找的思路
假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。所以二分法查找的速度比较快,次数比较少,性能比较好;因此相对来说其删除和插入操作就不是那么灵活了。
代码实现
#FileName:lean001.py
#author:www.py40.com
#二分法查找
def search2(a,m):
low = 0
high = len(a) - 1
while low<=high:
mid = (int)((low + high)/2)
midval = a[mid]
if midval
low = mid + 1
elif midval>m:
high = mid-1
else:
print(mid)
return(mid)
print(-1)
return(-1)
if __name__ == "__main__":
a = [1,3,45,12,3,1,3,5,6,74,32,6,3]
a.sort()
print(a)
search2(a,12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#FileName:lean001.py
#author:www.py40.com
#二分法查找
defsearch2(a,m):
low=0
high=len(a)-1
whilelow<=high:
mid=(int)((low+high)/2)
midval=a[mid]
ifmidval
low=mid+1
elifmidval>m:
high=mid-1
else:
print(mid)
return(mid)
print(-1)
return(-1)
if__name__=="__main__":
a=[1,3,45,12,3,1,3,5,6,74,32,6,3]
a.sort()
print(a)
search2(a,12)