Бинарный поиск C# возвращает отрицательные индексыC#

Место общения программистов C#
Anonymous
Бинарный поиск C# возвращает отрицательные индексы

Сообщение Anonymous »

Сегодня я задумался о двоичном поиске. Я слышал, что это самый быстрый метод поиска индексов в больших массивах. Поэтому я решил написать код, чтобы посмотреть, получу ли я исключение в случае отсутствия индекса, который я ищу.

Код: Выделить всё

int[] longArray = new int[1000];
Random rnd = new Random();

for (int i = 0; i < longArray.Length; i++)
{
longArray[i] = rnd.Next(1, 1000);
}

Array.Sort(longArray);

int indexOfMyNum = Array.BinarySearch(longArray, 706);
Console.WriteLine("Here it is: " +  indexOfMyNum);
А теперь самое интересное: не было никаких исключений: моя программа всегда возвращает число, которое время от времени является отрицательным. Я знаю, что случайный выбор не был необходим, чтобы увидеть такое поведение, но я хотел проверить его на большем массиве. Теперь мой вопрос: почему я получаю отрицательный индекс вместо исключения. Поправьте меня, если я ошибаюсь, поскольку индексы массива напрямую связаны с адресами памяти. Означает ли это, что BinarySearch просматривает участки памяти, доступ к которым ему нельзя разрешать, чтобы узнать, есть ли там мой номер?

Кто-нибудь знает, почему это происходит, а не исключение?

Подробнее здесь: https://stackoverflow.com/questions/409 ... ve-indexes

Вернуться в «C#»