我有一个〜1000个对象的数组,这些对象是浮点值,随着时间的推移而发展(以一种无法预先确定的方式;假设它是一个黑盒子)。在每个固定的时间间隔,我想设置一个阈值,用于分隔前5-15%的值,在任何可以最大限度地区分的地方进行切割"当然,"从某种意义上说,数组中的数据点之间存在最大差距。
实施此类算法的最佳方法是什么?显然(我认为)在每个时间间隔结束时采取的第一步是对数组进行排序,但之后我不确定解决此问题的最有效方法是什么。我有一种感觉,没有必要将排序数组中感兴趣区域中连续数据点之间的所有间隙制成表格,并且有比蛮力更快的方法来解决这个问题,但我不确定这是什么。有什么想法吗?
答案 0 :(得分:0)
您可以编写自己的快速排序/选择例程,该例程不会对完全位于5%-15%ile范围之外的子阵列发出递归调用。但是,对于只有1,000件商品,我不确定是否值得这么麻烦。
另一种可能性是使用花哨的数据结构在值随着值的演变而在线跟踪最大间隙(例如,用子树计数(用于快速索引)和最大子树间隙装饰的二叉搜索树)。目前尚不清楚这是不值得的。