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


首先是非递归查找函数:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM