#include <stdio.h>
#include <stdlib.h>
#define NR(x) (sizeof(x)/sizeof(x[0]))
int BinarySerach(int a[],int size,int p)
{
int L = 0 ; //查找区间的左端点
int R = size - 1 ; //查找区间的右端点
int mid ;
while(L <= R) //如果查找区间不为空就继续查找
{
mid = L + (R-L)/2 ; //取到查找区间正中元素的下标
if(p == a[mid])
return mid ; //返回对应数组元素的下标
else if(p > mid)
L = mid + 1 ; //设置新的查找区间的左端点
else
R = mid - 1 ; //设置新的查找区间的右端点
}
return -1 ;
}
int main(void)
{
int a[9] = {1 , 2 ,3 , 4 , 5 , 6, 7 , 8 , 9};
int ret ;
ret = BinarySerach(a,NR(a),8);
//返回查找到的数组元素的下标
printf("ret:%d a[%d]:%d\n",ret,ret,a[ret]);
return 0 ;
}
二分查找(c)
最新推荐文章于 2024-08-02 00:40:41 发布