Still there is an error it should be if(a[mid] > mid ) BsearchElemEqualIndex (a, start, mid); else BsearchElemEqualIndex (a, mid + 1, end); correct me if I am wrong....
On Thu, Mar 3, 2011 at 7:33 PM, nishaanth <nishaant...@gmail.com> wrote: > 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. > -- Regards Gunjan Sharma Chairman IEEE Students Chapter IIT Roorkee B.Tech IV year CSE Contact No- +91 9997767077 -- 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.