0

標準のクイックソート アルゴリズムを実装し、数回実行してテストし、実行時間を配列に保存しました。

int max = 100;
int runs = 1000;
int[] arr = new int[max];
Long[] times = new Long[runs];  

while(n < runs){
        for(int i =0 ; i<max; i++){
        arr[i]=(int)(Math.random()*99);
        //arr[i] = i;  
        }

        Long start = System.nanoTime();
        quicksortsimple(arr,0,max-1);
        Long now = System.nanoTime();

        times[n++] = now-start;
    }

ここで何が起こるかというと、出力された「times」配列ははるかに大きな値で始まり、徐々に減少し、100 番目のインデックス (クイックソートの 100 回の実行) の後、ビット定数になりますが、この値は最初の 2-3 値の 10 分の 1 未満です。 . n= 1000 で返される平均値は、プログラムの複数のルーン文字で同じです。

配列を既にソートされている (コメントアウトされている) ように初期化しても、同じことが起こりますが、(当然のことながら) 平均時間がかかります。

しかし、これは、同じアレイの同じアルゴリズムに対して、このようにさまざまな実行時間を返すべきではありませんでした。減少パターンは何を示していますか?

4

1 に答える 1