需要帮助解决二进制搜索

时间:2017-02-10 09:09:56

标签: algorithm python-3.x

我正在尝试解决另一个Question

我已经实现了解决此问题所需的二进制搜索功能,但我无法返回正确的值,这有助于我解决这个问题。这是我的代码。

请帮我解决这个问题。

def BinarySearch(arr,low,high,search):
    while(low<=high):

        middle=(low+high)/2
        int_mid=int(middle)
        print(int_mid)

        if arr[int_mid]==search:
            return int_mid
        elif arr[int_mid]>search:
            low=int_mid+1
        elif arr[int_mid]<search:
            high=int_mid-1


    return arr[int_mid]


tc=int(input())

while(tc>0):
    size=int(input())

    A=list(map(int,input().split()))
    B=list(map(int,input().split()))

    monkiness=[]


    for i in range(len(A)):
        for j in range(len(B)):

            if (j>=i):
                y=BinarySearch(B,0,len(B),B[j])
                z=BinarySearch(A,0,len(A),A[i])

            print(y,z)
            if y>=z:

                m=j-i
                monkiness.append(m)

if len(monkiness)==0:
    print(0)
else:
    print(monkiness)
    maxiumum=max(monkiness)
    print(maxiumum)
tc-=1

1 个答案:

答案 0 :(得分:1)

  1. 您不需要在此处进行二元搜索(&#39;此处&#39;表示您提供的代码,而不是问题解决方案)
  2. 即使您需要二进制搜索,BinarySearch也适用于非递减数组,但您的数组不增加。
  3. 目标是通过利用数组排序的事实,找到比N ^ 2时间少的运行解决方案。