samedi 4 juillet 2015

Why is this simple binary search not returning correct value of mid though outputiing correct mid value?

for A = {1,2,3,4} and function call b_search(3,0,arr.size()-1,arr) //arr being a vector. When I cout mid inside the function it returns 2 but when i return mid in place of cout mid it is returning value 0.

int b_search(int tbs,int p,int q,vector<int> A){
    if(p<q){
      int mid = p+(q-p)/2;
      if(A[mid]==tbs){
         return mid;
      }else if(tbs<A[mid]){
         b_search(tbs,0,mid-1,A);
      }else{
         b_search(tbs,mid+1,q,A);
      }
   }

}

Aucun commentaire:

Enregistrer un commentaire