二进制搜索算法不起作用

时间:2017-09-11 18:14:11

标签: python algorithm

我正在尝试实现二进制搜索,不知怎的,我的函数没有返回想要的值

Asynctask

它一直在回归import math def binarySearch(a, l, r, v): if l >= r: return -1 mid = math.floor((l + r)/ 2) if a[mid] == v: return mid elif(v < mid): binarySearch(a,mid+1,r,v) else: binarySearch(a,l,mid-1,v) a = [1,2,5,8,23,67,345] print(binarySearch(a,0,6,5)); 在我出错的地方,有人可以开灯吗?

2 个答案:

答案 0 :(得分:2)

你没有在elif语句中返回所以你的函数只返回-1

import math
def binarySearch(a, l, r, v): 
    if l > r:
        return -1
    mid = math.floor((l + r)/ 2)

    if a[mid] == v:
        return mid
    elif(v < a[mid]):
        return binarySearch(a,l,mid-1,v)
    else:
        return binarySearch(a,mid+1,r,v)

答案 1 :(得分:0)

试试这个:

int binarySearch(int arr[], int l, int r, int x)
{
    if (r>=l)
    {
        int mid = l + (r - l)/2;

        if (arr[mid] == x)
           return mid;

        if (arr[mid] > x)
           return binarySearch(arr, l, mid-1, x);

        return binarySearch(arr, mid+1, r, x);
    }

    return -1;
}