#include<stdio.h>
int search(int a[],int n,int tar){ //二分查找
int low=0,high=n-1,mid;
while(low<=high){
mid=(high+low)/2;
if(a[mid]==tar)
return mid; //返回元素位置
if(tar>a[mid])
low=mid+1;
else
high=mid-1;
}
if(low>high)
return low; //若查不到,返回目标元素应在数组中的位置
}
int main(){
int n,tar,i,ans;
scanf("%d",&n);
int *a;
a=(int*)malloc(n*sizeof(int)); //一定在这里分配空间
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&tar);
ans=search(a,n,tar);
printf("%d",ans);
return 0;
}
开始的时候一直运行错误,最后发现要使用malloc给数组分配空间就不会报错。