Frage

Ich habe verschiedene Sortierverfahren, die alle die gleiche Sortierung 100.000 Zufallszahl-Array.

Ich verwende die folgende Methode die Laufzeiten der einzelnen

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

Und die folgenden für die Zufallszahl arrary

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());

Wie kann ich das ändern, so dass ich jeden von ihnen Art 100-Arrays haben kann und nicht nur eine, und die Zeit, jedes Array zählen? Z.B. Run1 - 23ms; Run2 - 25ms; ... Run100 - 22ms

EDIT: Ich habe noch eine letzte Sache zu tun. So wird jede Iteration die Array ein paar Möglichkeiten, sortiert, sagen wir mal Einfügung, merge und schnell sortieren. So sagt Einfügung = 300ms, merge = 200ms und schnell = 100ms. Ich muss für jede Iteration, herauszufinden, welche Methode die schnellste sortiert.

Ich weiß, das ist eine einfache Min- / Max-Typ, was Sie tausendmal in unteren Klassen Programmierung zu tun. Wäre es leichter, jeden Wert in ein Feld zu werfen und einen array.min Anruf benutzen? (Was auch immer es tatsächlich ist, neu in Java-Syntax ..)

War es hilfreich?

Lösung

Zur Zeit sieht es aus wie Sie das Array erstellen und dann mit verschiedenen Funktionen immer wieder zu sortieren.

Sie müssen lediglich das alles in einer Schleife setzen.

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> */
}

Sie können den Index run verwenden, während die Ergebnisse ausdrucken.

Andere Tipps

Sie würden wahrscheinlich wie etwas tun:

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
}

Sie würden immer noch die Initialisierung vorher müssen. Ich glaube, ich weiß nicht, warum das Array geklont wird, bevor es sortiert wird. Können Sie direkt sortieren, dass Array?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top