public static void Main() { int[] nums = new int[] {1,0,1,2,3}; int k = Array.BinarySearch<int>(nums, 0); Console.WriteLine(k); }
Почему бинарный поиск 0 в массиве int [] возвращает -1 вместо индекса, где 0 находится в?
BinarySearch работает, только если элементы в порядке.
BinarySearch
Поиск всего одномерного отсортированного массива для указанного c элемента ...
Вместо этого можно использовать IndexOf, который выполняет линейный поиск:
IndexOf
int k = nums.IndexOf(0);
BinarySearch ожидает сортировки ввода. Из документов :
Если этот метод вызывается с несортированным массивом, возвращаемое значение может быть неправильным, а отрицательное число может быть возвращено, даже если значение присутствует в массиве.