折半查找法

#折半查找法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 @   张翼德是也  阅读(347)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示