c# - 从数组中查找相等或最接近的较小值

标签 c# performance

假设我有这个数组(它实际上是 255 长,值最大为 int.MaxValue):

int[] lows = {0,9,0,0,5,0,0,8,4,1,3,0,0,0,0};

我想从这个数组中获取一个值等于小于我的数字的索引。

number = 7 -> index = 4
number = 2 -> index = 9
number = 8 -> index = 7
number = 9 -> index = 1

找到它的最快方法是什么?

到目前为止,我使用的是线性搜索,但事实证明这对我的需要来说效率太低,因为即使这个数组只有 255 长,值也会被搜索几百万次。

我需要与 Java 中使用的 TreeSet.floor(E) 相同的东西。我想使用 Dictionary,但我不知道它是否能像我需要的那样找到第一个更小或相等的值。

最佳答案

对数组进行排序,然后进行二进制搜索以查找值。

参见:

https://en.wikipedia.org/wiki/Binary_search

Array.BinarySearch Method

关于c# - 从数组中查找相等或最接近的较小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215065/

相关文章:

c# - 按钮单击 c# 中的代码发生在函数完成之后

C# 运行 Windows 窗体应用程序不以窗体开头

r - 在保留组位置的同时进行排序

python - 如何提高 Python 中查找最常见字符串的性能?

c++ - 如何加快图像的双线性插值?

c# - 在运行时获取本地对象/变量的列表

c# - C#中的sql命令错误

scala - Spark UDAF 与 ArrayType 作为 bufferSchema 性能问题

c# - 设置和检索 Azure Blob 存储中 Blob 的元数据

c++ - 与 omp simd : when to use each? 并行