gpt4 book ai didi

c++ - 在列表中获取大于 x 的第一个值的有效方法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:21:09 24 4
gpt4 key购买 nike

我有两个排序数组,HaystackNeedles。为了执行下一步。

例如:

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 也是排序的)。

但是我大脑的一部分在喊“平分!”。这里二分法实际上会更快吗,因为编译器会发现它比简单的 block 读取和迭代更难优化?是否需要一个非常长的 Haystack 才有值(value)?

最佳答案

你需要考虑场景,

n*lg(m) < n+m,

其中 n 是 Needle 的大小,m 是 Haystack 的大小。

因此,这完全取决于 n 和 m 值的各种组合。

关于c++ - 在列表中获取大于 x 的第一个值的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4990562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com