gpt4 book ai didi

c# - 如何在不迭代所有元素的情况下在预排序数组中找到一个元素?

转载 作者:行者123 更新时间:2023-11-30 22:54:37 25 4
gpt4 key购买 nike

我试图找到一条线与一组抛物线的交点的最大值(我正在实现一条财富线,这是一个网站事件)。

我注意到当我接近最大值(我正在寻找的那个)时,这些值往往会变大,然后又变小,就好像它们已经排序一样。一个例子是这样的:
[f(a) = -3, f(b) = -1, f(c) = 4, f(d) = 18, f(e) = 67, f(f) = 34, f( g) = 8, f(h) = -7]
(67 是我需要获得的值)。

由于计算交点不如读取数组的值那么快,我想知道是否有更快的方法来获得最大值而无需迭代所有抛物线。

由于 voronoï 图很大,抛物线数组预计平均有 10k 到 20k 个元素。最大值可以在数组中的任何位置。

最佳答案

先增后减或先减后增的数列称为双调数列。您可以在 O(log n) 中找到最大/最小点,这里是 a link到一个示例实现。事实上,一旦找到这一点,就可以使用二分查找在 O(log n) 中找到任何元素。

关于c# - 如何在不迭代所有元素的情况下在预排序数组中找到一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089347/

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