Ignore the previous post..there is a small error in the code..
@Ankit..your algm is O(n)...you should split the problem size to n/2 at
every stage...rather you are again computing both the subarrays..

Here is the correct code...

int BsearchElemEqualIndex (int *a, int start, int end)
{
       int mid = (((end - start) >> 1) + start);
       if (a[mid] == mid)
               return a[mid];
       else if (a[mid] != mid)
       {
               if (mid == start || mid == end)
               {
                       return -1;
               }
               else
               {
                      if(a[mid] < mid )
                       BsearchElemEqualIndex (a, start, mid);
                       else
                           BsearchElemEqualIndex (a, mid + 1, end);
               }
       }
}

int _tmain(int argc, _TCHAR* argv[])
{
       int a[SIZE] = {5,9,3,8,1,2,6,7};
       int x = BsearchElemEqualIndex (a, 0, SIZE);
       printf ("%d", x);
       system ("PAUSE");
       return 0;
}
S.Nishaanth,
Computer Science and engineering,
IIT Madras.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to