优化数组的双重迭代

时间:2017-08-22 15:29:22

标签: c arrays for-loop optimization

我在编码竞赛中为练习题编写了以下代码,但是当我运行它时,我会随着时间的推移而去。主要的罪魁祸首(我猜)是在O(n ^ 2)中运行的双循环。有没有办法优化这段代码?我已经尝试过搞乱记忆,但我无法弄清楚如何做到这一点。

for (i=n;i>0;i--){
    int index = linearSearch(seq,i,n);
    int height = bricks[index];
    for (j=0;j<n;j++){
        if (j != index){
            if (bricks[j] >= height){
                while(bricks[j]>=height){
                    bricks[j]--;
                    count++;
                }

                if(bricks[j] < 0){
                    printf("-1\n");
                    return 0;
                }

            }
        }
    }

    bricks[index] = 0;
    seq[index] = 0;
}

1 个答案:

答案 0 :(得分:0)

我不确定发布的代码段的目标,但以下提议的代码可能有助于执行持续时间:

img