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.