#include<stdio.h>
int Binsearch(int arr[],int len,int key)//arr[]:数组,len:长度,key:所要找的数字
{
int low=0;//最小值的下标
int high=len-1;//最大值的下标
int mid;
while(low<=high)//在low和high错位或相等是退出循环
{
mid=(low+high)/2;//中间下标
if(arr[mid]==key)
{
return mid;//将数组下标返回给主函数
}
else if(arr[mid]<key)//往右找
{
low=mid+1;//由于已经排除改下标所对应的数字,则进行下一位
}
else //往左找
{
high=mid-1;//由于已经排除该下标所对应的数字,进行上一位
}
}
return -1;//表示没有改数字
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10,11,12};
for(int i=0;i<15;i++)
{
printf("%d\n",Binsearch(arr,sizeof(arr)/sizeof(arr[0]),i));
}
return 0;
}
折半查找
最新推荐文章于 2023-08-27 23:41:30 发布