小编net*_*ero的帖子

C# 二进制搜索返回负索引

今天我已经把我的头放在二分搜索上。我听说这是在大数组中查找索引的最快方法。所以我决定编写代码,看看在没有我要搜索的索引的情况下是否会出现异常。

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 正在查看他不应该被允许的内存片段,看看我的号码是否在那里?

有人知道为什么会发生这种情况而不是例外吗?

c# arrays

0
推荐指数
1
解决办法
1754
查看次数

标签 统计

arrays ×1

c# ×1