检查一个项目是否存在于最多有1000000个或更多项目的数组中的有效方法是什么
本文关键字:项目 数组 是什么 方法 有效 1000000个 一个 于最多 存在 是否 检查 | 更新日期: 2023-09-27 18:27:22
如果您想检查一个int值是否存在于一个最多有1000000个项的int[]数组中,最有效的方法是什么?
int[] values = {1, 2, 3, 4};
value = 4
我知道使用for循环或类似的东西:
values.Contains(value);
Array.Exists(values , i => i==value );
Array.IndexOf(values, value) != -1;
因为数组是排序的,所以最好的方法是使用BinarySearch
方法。
bool IsInArray(int[] values, int value)
{
var index = Array.BinarySearch(values, value);
return (index >= 0);
}
如果数组没有排序,那么您列出的其他3个选项可能都会执行完全相同的操作,我只会使用values.Contains(value);
,因为这是最简单的选择。
算法:
-
若范围小于10个元素,则迭代直到找到元素。
-
否则,找到数组的中间元素,并将其与您的值进行比较。
-
根据比较结果选择新的范围(前半部分或后半部分)并递归地运行步骤1。