二分搜索的实现方法分为递归法和迭代法。递归方法常用的方法如下:
InBlock.gif int search( int a[], int from, int to, int key)    
InBlock.gif{    
InBlock.gif   if(to<from) return -1;    
InBlock.gif    
InBlock.gif   int middle = (from+to)/2;    
InBlock.gif  cnt++;
InBlock.gif   if(a[middle]==key)    
InBlock.gif     return middle;    
InBlock.gif    
InBlock.gif   if(a[middle]>key)    
InBlock.gif     return search(a,from,middle-1,key);    
InBlock.gif   else    
InBlock.gif     return search(a,middle+1,to,key);    
InBlock.gif }    
这种方法函数的参数中包括搜索的起始点和终点,《编程珠玑》习题4.6.11中提到了另外一种递归的实现方法,与习题11.14的思路是一样的,没有了搜索的起始点和终点。代码如下:
InBlock.gif int search( int a[], int n, int key)    
InBlock.gif{    
InBlock.gif   if(n<1) return -1;    
InBlock.gif         static cnt=0;    
InBlock.gif   int middle = n/2;    
InBlock.gif    
InBlock.gif   if(a[middle]==key)    
InBlock.gif     return middle+cnt;    
InBlock.gif    
InBlock.gif   if(a[middle]>key)    
InBlock.gif     return search(a,middle,key);    
InBlock.gif   else    
InBlock.gif  {cnt+=middle+1;
InBlock.gif     return search(a+middle+1,n-middle-1,key);    
InBlock.gif  }
InBlock.gif }