C# array.binarysearch Проблема
-
18-09-2019 - |
Вопрос
Кто -нибудь может объяснить, почему это происходит? т.е. Даже когда 175 присутствует в массиве в месте 7, Array.BinarySearch возвращает отрицательное значение?
Пожалуйста, смотрите это изображение:
Решение
Вы заранее сортировали свой массив? BinarySearch
Ожидает, что массив будет отсортирован. В противном случае это может вернуть неправильные результаты.
Кроме того, вам следует проверить на >= 0
, нет > 0
. Анкет Элемент может присутствовать в индексе 0.
Другие советы
На рисунке массив составляет 220 элементов, и вы показываете только первый 7. Все 220 элементов должны быть отсортированы, в противном случае бинарный исследователь потерпит неудачу.
Если, например, вы используете только первый num
элементы, используйте BinarySearch(0, num, 175)
- Убедитесь, что массив отсортирован
Убедитесь, что объект, на который вы ищете, имеет тот же тип, что и объекты, он массив. Это помогает использовать общую версию:
Array.binarysearch (..)
Вы можете использовать конкретную версию типа, чтобы убедиться, что ваши входные параметры верны, если массив отсортирован:
int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
int index = Array.BinarySearch<int>(array, 175);
Вы получите ошибку компиляции, если массив ввода или параметр поиска не имеет типа Int.