二分查找 代码提交到oj系统显示运行错误,请问怎么修改

#include <stdio.h>
#include <stdlib.h>
#define N 10000

void f(int a[],int n,int x);
int main()
{
    int a[N];
    int n,m,x;
    int i,j;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&m);
    for(j=0;j<m;j++)
    {
        scanf("%d",&x);
        f(a,n,x);
    }
      return 0;
}
void f(int a[],int n,int x)
{
    int low=0; int mid; int high=n;
    int b=0;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(a[mid]>x)
        {
            high=mid-1;
        }
        else if(a[mid]<x)
        {
            low=mid+1;
        }
        else{
            printf("%d\n",mid);
            b++;
            break;
        }
    }
    if(b==0)
        printf("Not found!\n");
}

 

二分函数中 high 的初始值应是 n - 1