二分算法C实现

来源:互联网 发布:windows仿mac dock栏 编辑:程序博客网 时间:2024/06/07 10:25
#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 ;}

运行结果:


0 0
原创粉丝点击