#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 ; }
运行结果:
时间: 2024-10-05 05:05:46