"""
二分查找
1、被查找的序列是有序的。
2、要查找的数据与序列的中间数比较,
如果相等,不用继续找了,
否则要么在中间数的左边序列找,要么在右边序列找,
在子序列继续上述方法。
3、时间复杂度分析
查找规模为n,第一次查找后的规模为(n-1)/2,取最长子序列,
假如n是奇数,规模为(n-1)/2,假如n是偶数,规模为n/2(取最长子序列),
我们取规模的大值,即n/2,所以k次查找后的规模为n/2的k次方。
最坏情况下,经过k次查找后,规模为一个数待比较,即n/2的k次方=1,
k=log2的n,假如k有小数,因为规模是放大的,所以去掉小数,最终比较次数还要加1.
所以时间复杂度为log2的n取整后加1,当n趋于无限大时,可以忽略常数项,
所以最终为log2的n取整.
"""
key = int(input("请输入待找的整数:"))
d = [6,12,15,18,22,25,28,35,46,58,60]
f = False
i=0
j=len(d)-1
m = -1
while i<=j:
m = (i+j) // 2
if d[m] == key:
f = True
break
elif d[m] > key:
j = m-1
else:
i= m+1
if f:
print("查找成功!第%d个" %(m+1))
else:
print("没有找到")
对分查找(二分查找) python版
最新推荐文章于 2026-08-21 19:17:26 发布
 python版&spm=1001.2101.3001.5002&articleId=163669785&d=1&t=3&u=c6c73fe83f874914bc36e9abef748366)
145

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



