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 <[email protected]> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.