-1

invalid types 'int[int]' for array subscript Receiving this error in line arr[mid] == key when running the code.

invalid conversion from 'int*' to 'int' [-fpermissive] Receiving this error in line cout<<BinarySearch(arr, n, key)<<endl

//Binary Search

int BinarySearch(int arr, int n, int key)
{
    int start = 0;
    int end = n;

    while(start<=end)
    {
        int mid = (start+end)/2;

        if(arr[mid] == key)
            return mid;
        else if(arr[mid]>key)
            end = mid - 1;
        else
            start = mid + 1;
    }
    return -1;
}



int main()
{
    int n;
    cin>>n;

    int arr[n];
    for(int i=0;i<n;i++)
        cin>>arr[i];

    int key;
    cin>>key;

    cout<<BinarySearch(arr, n, key)<<endl;

    return 0;
}

1 Answers1

0

In a loop when start == end and end == n So mid == n And in the array can be accessed only up to position n-1

int BinarySearch(int arr, int n, int key)
{
int start = 0;
int end = n-1;
int mid;
while(start<=end)
{
    mid = (start+end)/2;

    if(arr[mid] == key)
        return mid;
    else if(arr[mid]>key)
        end = mid - 1;
    else
        start = mid + 1;
    }
    return -1;
 }