今天我已经把我的头放在二分搜索上。我听说这是在大数组中查找索引的最快方法。所以我决定编写代码,看看在没有我要搜索的索引的情况下是否会出现异常。
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);
Run Code Online (Sandbox Code Playgroud)
现在是有趣的部分,没有例外,我的程序总是返回数字,有时是负数。我知道随机不需要看到这种行为,但我想在更大的阵列上测试它。现在我的问题是,为什么我得到负索引而不是异常。如果我错了,请纠正我,因为数组的索引与内存地址直接相关,这是否意味着 BinarySearch 正在查看他不应该被允许的内存片段,看看我的号码是否在那里?
有人知道为什么会发生这种情况而不是例外吗?