二进制搜索(BSEARCH1)

2024-10-01 15:42:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理SPOJ的this问题。 这是一个关于二进制搜索的问题。 我试着用python实现这一点:

x,yu= input().split()
bu=int(yu)
y=int(yu)
array=input().split()
while y>0:
  qquery=input()
  y=y-1
query=int(qquery)
b= int(x)
left=1
right= b

while left <= right and bu>0:

 pmid=((right+left)/2-1)
 mid=int(pmid)

 fir=array[mid]

 fire=int(fir)
 if fire== query:
   bu=bu-1
 if query < fire:
   left=mid+1
 else :
   right=mid-1

这是输入:

5 4
2 4 7 7 9
7
10 
4
2

我得到一个无限循环3。 我在这个问题上纠缠了很久。我真的很想有人指出我的错误,解决办法和解释。 谢谢您!!你知道吗


Tags: rightinputqueryarrayleftfireintsplit
1条回答
网友
1楼 · 发布于 2024-10-01 15:42:57

如果您正在寻找二进制搜索算法,请尝试此代码。你知道吗

def binary_search(seq, t):
    min = 0
    max = len(seq) - 1
    while True:
        if max < min:
            return -1
        m = (min + max) // 2
        if seq[m] < t:
            min = m + 1
        elif seq[m] > t:
            max = m - 1
        else:
           return m
seq = [1, 2, 3, 4]
t = 2
binary_search(seq, t)

相关问题 更多 >

    热门问题