//折半查找(二分查找)
//形参中的arr是一个指针变量,若在此计算数组的大小将会出错
//sizeof(arr)计算的将会是指针的大小
//数组传参的时候传递的是数组首元素的地址
int binary_search(int arr[],int key,int sz){
int low = 0;
int high = sz-1;
int mid =0;
while(low<=high){
mid=(high-low)/2+low;
if(arr[mid]<key)
low=mid+1;
else if(arr[mid]>key)
high=mid-1;
else
return mid;
}
return -1;
}
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int key = 7; //要查找的关键字
int sz=sizeof(arr)/sizeof(arr[0]); //数组大小
int ret = binary_search(arr,key,sz);
if(ret==-1){
printf("找不到\n");
}
else{
printf("找到了,下标为:%d\n",ret);
}
}
折半查找--C语言
于 2024-01-25 21:09:43 首次发布