解决大O表示法中的for循环

时间:2014-11-10 17:52:55

标签: algorithm loops for-loop data-structures

我有以下循环:

n = 2 ^ M

for(int i = n; i > 0; i--){
 for(int j = 1; j < n ; j*=2){
  for(int k = 0 ; k < j ; k++){
  }
 }
}

我试图理解如何处理这个问题,我试图将其分解为单步但没有运气。如果有人能解释我如何看待这个以及在这类问题中寻找什么。

1 个答案:

答案 0 :(得分:0)

为什么不直接检测它,看看会发生什么?

例如

public static void main(String[] args) {

    int[] bb = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //try other values here like 1,10,100
    for (int b : bb) {
        int n = (int) Math.pow(2, b);

        int l1 = 0;
        int l2 = 0;
        int l3 = 0;

        for (int i = n; i > 0; i--) {
            l1++;
            for (int j = 1; j < n; j *= 2) {
                l2++;
                for (int k = 0; k < j; k++) {
                    l3++;
                }
            }
        }

        System.out.println(b+" "+l1+" "+l2+" "+l3);
    }

}

你有类似

的东西
1 2 2 2
2 4 8 12
3 8 24 56
4 16 64 240
5 32 160 992
6 64 384 4032
7 128 896 16256
8 256 2048 65280
9 512 4608 261632
10 1024 10240 1047552

看起来是什么?

enter image description here