首页 > 代码库 > 学习笔记:二分法查找的递归和非递归两种算法

学习笔记:二分法查找的递归和非递归两种算法

首先是非递归查找函数:

 1 int BinarySearch(PTABLE table,int numb){ 2     int Left,Right,Mid,ERROR=-1; 3     Left=0; 4     right=table->Lenth-1; 5     while(right>=Left){ 6         mid=(Right+Left)/2; 7         if(table->data[mid]>numb) 8             Right=mid-1; 9         else if(table->data[mid]<numb)10             Left=mid-1;11         else12             return(table->data[mid]);13     }14     return(ERROR);15 }

采用递归方式:

 1 //recurbinary 2 int recurbinary(PTABLE table,int Left,int Right,int numb){ 3     if(Left>Right) 4         return(-1); 5     mid=(Left+Right)/2; 6     if(mid==table->data[mid]) 7         return(table->data[mid]); 8     else if(mid>table->data[mid]) 9         recurbinary(table,Left,mid-1,numb);10     else if(mid<table->data[mid])11         recurbinary(table,mid+1,Right,numb);12 }

 

学习笔记:二分法查找的递归和非递归两种算法