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

时间:2021-09-15 20:20:27

首先是非递归查找函数:

 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 }