小编Dav*_*ave的帖子

改进数组的步进两次(同一数组上的嵌套循环)

为了确定从时间点'D1'到未来'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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有更好的算法/方法来做到这一点?由于尾部的9个元素在外循环的下一次迭代中被重用,我可以从中获益吗?我的目标是将其降低到远远小于(Big-O Notation)O(n 2),但我无法绕过它.通常,找到满足标准的D1,D2对意味着下一个D1元素也将具有更大的匹配机会.我可以利用这个优势吗?

我试图让它尽可能高效,因为数据集非常大.

java algorithm performance big-o loops

6
推荐指数
1
解决办法
1696
查看次数

标签 统计

algorithm ×1

big-o ×1

java ×1

loops ×1

performance ×1