C# Array.BinarySearch Problem
-
18-09-2019 - |
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:
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)
- Make sure the array is sorted
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.