Вопрос

Кто -нибудь может объяснить, почему это происходит? т.е. Даже когда 175 присутствует в массиве в месте 7, Array.BinarySearch возвращает отрицательное значение?

Пожалуйста, смотрите это изображение:

Код http://www.freeimagehosting.net/uploads/555fef4560.jpg

Это было полезно?

Решение

Вы заранее сортировали свой массив? BinarySearch Ожидает, что массив будет отсортирован. В противном случае это может вернуть неправильные результаты.

Кроме того, вам следует проверить на >= 0, нет > 0. Анкет Элемент может присутствовать в индексе 0.

Другие советы

На рисунке массив составляет 220 элементов, и вы показываете только первый 7. Все 220 элементов должны быть отсортированы, в противном случае бинарный исследователь потерпит неудачу.

Если, например, вы используете только первый num элементы, используйте BinarySearch(0, num, 175)

  1. Убедитесь, что массив отсортирован
  2. Убедитесь, что объект, на который вы ищете, имеет тот же тип, что и объекты, он массив. Это помогает использовать общую версию:

    Array.binarysearch (..)

Вы можете использовать конкретную версию типа, чтобы убедиться, что ваши входные параметры верны, если массив отсортирован:

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

Вы получите ошибку компиляции, если массив ввода или параметр поиска не имеет типа Int.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top