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

首先是非递归查找函数:

 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         else
12             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(middata[mid])
11         recurbinary(table,mid+1,Right,numb);
12 }

 

转载于:https://www.cnblogs.com/hakase/p/5869440.html

你可能感兴趣的:(学习笔记:二分法查找的递归和非递归两种算法)