折半查找法

#折半查找法1.0:在一串基本有序数字中找到数字:29--进行2个数的比较
a=7
b=8
if(a==b):
print("两个数相等")
else:
print("两个数不相等")

#折半查找2.0--找到一个数列的中间位置开始查找
a=7
ls=[1,4,6,11,23]
left=0
n=len(ls)
#print("n=",n)
right=n-1
mid=(left+right)//2
#mid=int((left+right)/2) 整除,这2行一个意思
print("中间元素为:",ls[mid])
#print("mid",mid)
if(a==ls[mid]):
print("两个数相等")
else:
print("两个数不相等")

#折半查找3.0--查找位置的处理
a=2
ls=[1,4,6,11,23]
left=0
n=len(ls)
right=n-1
mid=(left+right)//2
if(a>ls[mid]):
left=mid+1
elif(a<ls[mid]):
right=mid-1
else:
print("找到该数字")
mid=(left+right)//2
print("新的中间位置为:",mid,"元素值为:",ls[mid])

#折半查找4.0--折半查找循环处理
a=0
ls=[1,4,5,7,23]
left=0
n=len(ls)
right=n-1
mid=(left+right)//2
while(left<=right):
if(a>ls[mid]):
left=mid+1
elif(a<ls[mid]):
right=mid-1
else:
print("找到该数字")
break;
mid=(left+right)//2
print("新的中间位置为:",mid,"元素值为:",ls[mid])
if(left>right):
print("meiyou找到该数字")
"""
#折半查找5.0--写入一个自定义函数中
def search(a,ls):
left=0
n=len(ls)
right=n-1
mid=(left+right)//2
while(left<=right):
if(a>ls[mid]):
left=mid+1
elif(a<ls[mid]):
right=mid-1
else:
print("找到该数字")
return 1
break;
mid=(left+right)//2
print("新的中间位置为:",mid,"元素值为:",ls[mid])
#if(left>right):
return 0

a=int(input("输入一个数"))
ls=[1,4,5,7,11,19,23,88]
result=search(a,ls)
if(result==0):
print("该数不存在")
else:
print("该数存在")
posted @ 2022-07-30 15:41  张翼德是也  阅读(376)  评论(0)    收藏  举报