標準のクイックソート アルゴリズムを実装し、数回実行してテストし、実行時間を配列に保存しました。
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 で返される平均値は、プログラムの複数のルーン文字で同じです。
配列を既にソートされている (コメントアウトされている) ように初期化しても、同じことが起こりますが、(当然のことながら) 平均時間がかかります。
しかし、これは、同じアレイの同じアルゴリズムに対して、このようにさまざまな実行時間を返すべきではありませんでした。減少パターンは何を示していますか?