Question

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 http://www.freeimagehosting.net/uploads/555fef4560.jpg

Was it helpful?

Solution

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.

OTHER TIPS

From the picture, the array is 220 elements and you only show the first 7. All 220 elements must be sorted, otherwise BinarySearch will fail.

If for instance you only use the first num elements, use BinarySearch(0, num, 175)

  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(..)

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top