簡體   English   中英

for循環的速度:超出Big-O表示法

[英]Speed of for loop: beyond Big-O notations

這個問題與Big-O表示法無關。

這實際上是讓我驚訝的地方。 考慮一下代碼片段:

for(int i = 0; i < 13; i++){
        long beg = System.currentTimeMillis();

        int k, l;

        for(l = 0; l < 1000000; l++){
            for(int j = 0; j < 65535; j++) {
                if(pixels[j] == pixels[l])
                    k = j;
                    //j = 70000;
            }
        }

        System.out.println(System.currentTimeMillis() - beg + " ms");
        System.out.println();
    }

輸出為:

10毫秒

30毫秒

10毫秒

10毫秒

10毫秒

10毫秒

10毫秒

10毫秒

10毫秒

10毫秒

10毫秒

現在,考慮一下代碼片段:

for(int i = 0; i < 13; i++){
        long beg = System.currentTimeMillis();

        int k, l;

        for(l = 0; l < 1000000; l++){
            for(int j = 0; j < 65535; j++) {
                if(pixels[j] == pixels[l])
                    //k = j;
                    j = 70000;
            }
        }

        System.out.println(System.currentTimeMillis() - beg + " ms");
        System.out.println();
    }

輸出為:“ 164596 ms”,依此類推。 為什么?

每次將j重置為0。

這意味着您陷入了無限循環。

for(int j = 0; j < 65535; j++) {
            //break;
            j = 0;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM