質問

同じ100,000の乱数アレイをすべて並べ替えているさまざまな並べ替え方法があります。

次の方法を使用してそれぞれのランタイムを見つけます

long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

ランダム数の矢印については次のとおりです

int maxSize = 100000;  // array size
   Sortarr arr, iniArr;         // reference to array
   arr = new Sortarr(maxSize);  // create the array
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

それぞれが1つだけでなく100の配列を並べ替えて、各配列の時間をカウントできるようにこれを変更するにはどうすればよいですか?例えば。 run1-23ms; run2-25ms; ... run100-22ms

編集:最後にやることが1つあります。したがって、各反復はいくつかの方法で配列をソートします。挿入、マージ、クイックソートなど。挿入= 300ms、マージ= 200ms、およびQuick = 100msと言ってください。反復ごとに、どの方法が最も速くソートされたかを見つける必要があります。

これは、より低いプログラミングクラスで1000回行うシンプルなMin/Maxタイプのものであることを知っています。各値を配列に投げて配列を使用する方が簡単ですか? (実際に何であれ、Java構文は初めてです。)

役に立ちましたか?

解決

現在、アレイを作成し、さまざまな機能を使用して繰り返しソートするように見えます。

そのすべてをループに配置する必要があります。

int maxRuns = 100;

int maxSize = 100000;  // array size

for (int run=0; run<maxRuns; run++) {   
    Sortarr arr, iniArr;         // reference to array
    arr = new Sortarr(maxSize);  // create the array
    iniArr = new Sortarr(maxSize);

    // insert random numbers
    Random generator = new Random();
    for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

    long insertionStart = System.currentTimeMillis();
    arr.Clone(iniArr);
    arr.insertionSort();
    long insertionFinal = System.currentTimeMillis() - insertionStart;
    /* <more code goes here> */
}

インデックスを使用できます run 結果を印刷しながら。

他のヒント

あなたはおそらく次のようなことをしているでしょう:

for (int try = 0; try < 100; try++) {
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

   long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

   // print out the time, and/or add up the total
}

事前に初期化が必要です。アレイがソートされる前にクローン化される理由がわからないと思います。その配列を直接ソートできますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top