views:

284

answers:

3

Can anyone explain why this is happening? ie. Even when 175 is present in the array at location 7, the array.binarysearch is returning a negative value?

Please see this image:

Code

+7  A: 

Did you sort your array beforehand? BinarySearch expects the array to be sorted. Otherwise, it may return incorrect results.

Also, you should check for >= 0, not > 0. The element can be present at index 0.

Mehrdad Afshari
A: 
  1. Make sure the array is sorted
  2. Make sure the object you are searching for is of the same type as the objects int he array. It helps to use the generic version:

    Array.BinarySearch(..)

Nestor
A: 

You could use Type specific version to make sure your input parameters are correct if the array is sorted:

 int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
 int index = Array.BinarySearch<int>(array, 175);

You'll get a compilation error if the input array or search parameter is not of type int.

SwDevMan81