我会发疯还是这是C#中的错误?

问题描述 投票:-1回答:2
public static void Main()
{

    int[] nums = new int[] {1,0,1,2,3};     
    int k = Array.BinarySearch<int>(nums, 0);
    Console.WriteLine(k);
}

为什么int []数组中的二进制搜索为0会返回-1而不是0所在的索引?

.net binary-search
2个回答
2
投票

[BinarySearch仅在元素按顺序排列时有效。

在整个一维sorted数组中搜索特定元素...

您可以改用BinarySearch执行线性搜索:

IndexOf

1
投票

int k = nums.IndexOf(0); 要求对输入进行排序。从BinarySearch

如果使用未排序的数组调用此方法,则即使数组中存在值,返回值也可能不正确,并且可能返回负数。

© www.soinside.com 2019 - 2024. All rights reserved.