我有两个排序阵列,Haystack
和Needles
。我需要遍历Needles
,并且每次都会找到Haystack
中的第一个点,其值大于Needle
,以便执行下一步。在列表中获得大于x的第一个值的有效方法?
例如:
double [] dHaystack = { 1.2, 2.6, 7.0, 9.3, 19.4 }
double [] dNeedles = { 1.4, 6.4, 6.5, 7.0, 10.3 }
// expected indices 0 1 1 2 3
所以我应该得到的指数比针值等于或低于第一指标。
显而易见的方法是从干草堆开始迭代每个针,或者从最后找到的索引开始迭代(因为Needles也是排序的)。
但我的大脑的一部分正在喊着“平分!”。在这里实际上是否会更快,因为编译器会比简单的块读取和迭代更难以优化?它需要一个令人难以置信的长草垛值得吗?
我的大脑高喊着“榜样”,没有它就没有思考要优化什么。其他然后,从上次找到的接缝搜索良好。我不会试图聪明的编译器。通常这是非常好的 – 2011-02-14 09:34:11