gpt4 book ai didi

java - 改进两次遍历数组(同一数组上的嵌套循环)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:24 24 4
gpt4 key购买 nike

我有一大组数据,我想循环浏览这些数据,以确定从时间点“D1”到 future 时间点“D2”的数据集的各种统计信息。基本上,每次值之间的差异大于 10 时,我都想添加到数据库中。例如:

Datum[] data = x;
for( Datum d1 : data ){
Datum[] tail = y; //From d1 up to 10 elements ahead
for( Datum d2 : tail ){
//Calculate difference
if( (d2.val - d1.val) > 10 ){
//Insert into database
}
}
}

我的问题是,是否有更好的算法/方法来执行此操作?由于 tail 中的 9 个元素在外循环的下一次迭代中被重用,我可以从中受益吗?我的目标是将其降低到远小于 (Big-O Notation) O(n2),但我无法理解它。通常找到满足条件的 D1、D2 对意味着下一个 D1 元素也将有更大的匹配机会。我可以利用它吗?

我正在努力让它尽可能高效,因为数据集实在是太大了。

最佳答案

基于索引的 for 循环可能比迭代器执行得更好,因为您可以直接索引原始数组并避免复制到新数组。你会有更好的内存局部性,更少的错误共享等机会。

关于java - 改进两次遍历数组(同一数组上的嵌套循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237609/

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