加快两个阵列之间的线性时间比较?

时间:2015-07-30 20:44:21

标签: algorithm

我的代码现在有速度瓶颈。以下函数比较两个数组(位置和大小)并生成一个小于大小的新位置元素数组。这在O(n)时间内运行,但被多次调用。无论如何我还能为这个非常具体的案例做得更好吗?

代码:

function findValidDimensions(positions, sizes) {
    var forwardDimensions = [];
    var backwardDimensions = [];
    for (var i = 0; i < sizes.length; i++) {
        if (positions[i] < sizes[i]) {
            forwardDimensions.push(i);
        }
        if (positions[i] > 1) {
            backwardDimensions.push(i);
        }
    }

    // we can go forward or backward
    return {
        "forward": forwardDimensions,
        "backward": backwardDimensions
    }
}

2 个答案:

答案 0 :(得分:1)

除非有元素你可以避免看(从你的备用说明,听起来不太可能),查看 n 元素将花费O(n)时间。

答案 1 :(得分:0)

正如我所知,如果你使用一个大数组,你的方法的共谋很大,最好的搜索模式是堆或B树:)

一些参考:

https://en.wikipedia.org/wiki/Heap_%28data_structure%29

https://en.wikipedia.org/wiki/B-tree