#include<stdio.h>
//二分查找关键字
int Binarysearch(int *arr,int len,int key)
{
int low = 0;//low代表首元素0号下标
int high = len-1;//代表最后一个元素的下标,减1是因为最后一个是‘\0’
while(low <= high)
{
//int mid = (low+high)/2;
int mid = (low+high)>>1;//按位右移比上一语句除法快,按位右移相当于除法
if(arr[mid] == key)//当中间的值是找寻的关键字时,返回mid所对应的下标号
{
return mid;
}
else if(arr[mid] > key)//下标号>关键字
{
high = mid-1;//高标号是mid左边的
}
else
{
low = mid+1;//低标号是mid右边的
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7};
int len = sizeof(arr)/sizeof(arr[0]);
printf("%d\n",Binarysearch(arr,len,5));
printf("%d\n",Binarysearch(arr,len,3));
printf("%d\n",Binarysearch(arr,len,4));
getchar();
return 0;
}
答案:4,2,3