2016-11-12 5 views
0

im folgenden Code Ich habe zwei Arrays erstellt, die beide Arrays halten.Zugriff auf ein Array von Arrays Java

Das erste Array testPayloadArray soll das gesamte Array innerhalb der i-Position des testPayloadArray übergeben.

Die runTimeArray sollte die Anordnung innerhalb der i Postion des Arrays zu übergeben und dann innerhalb dieses Array des Laufzeitwert durch die Methode determinded bevölkert es in verwendet wird.

Meine Ausführung eher falsch, ich zugeben, ich bin mir nicht sicher, wie ich mich vorwärts bewegen soll.

Mein Gedanke ist, dass [i] [j] der beste Weg ist, dies zu tun. Dabei entspricht i der Position im ersten Array und j entspricht der Position im zweiten Array. Wenn ich also die dritte Position im zweiten Array im runTimeArray auffüllen möchte, würde der Code so aussehen, bin ich richtig?

runTimeArray[1][2] = endTime - StartTime; 

Code unten:

ublic class Main { 

public static void main(String[] args) { 
    int arrayLength = Integer.parseInt(args[0]); 
    int[] sortedDecending = new int[arrayLength]; 
    int j = 0; 
    int k = arrayLength; 
    for(int i = arrayLength; i > 0; i--) { 
     sortedDecending[j] = k; 
     j++; 
     k--; 
    } 
    j = 0; 
    int[] sameNum = new int[arrayLength]; 
    for(int i = 0; i < arrayLength; i++){ 
     sameNum[i] = k; 
    } 
    int[] sortedAssending = new int[arrayLength]; 
    for(int i = 0; i < arrayLength; i++){ 
     sortedAssending[i] = i; 
    } 

    int[] randomNum = new int[arrayLength]; 
    for(int i = 0; i < arrayLength; i++){ 
     Random rand = new Random(); 
     randomNum[i] = rand.nextInt(400); 
    } 
    TestInterface test = new TestInterface(sortedDecending, sameNum, sortedAssending, randomNum); 
    test.runTest(); 

} 

public void runTest(){ 
    int[][] testPayloadArray ={this.sortedDecending, this.sameNum, this.sortedAssending, this.randomNum}; 
    long[][] runTimeArray = {bubbleSortRunTime, selectionSortRunTime, insertionSortRunTime, 
    quicksortRunTime, quicksort2RunTime, mergesortRunTime, mergesort1RunTime, heapsortRunTime}; 

    for(int i = 0; i<4; i++){ 
     runBubbleSort(i, runTimeArray[i], testPayloadArray[i]); 
     runSelectionSort(i, runTimeArray[i], testPayloadArray[i]); 
     runInsertionSort(i, runTimeArray[i], testPayloadArray[i]); 
     runQuickSort(i,runTimeArray[i], testPayloadArray[i]); 
     runQuickSort2(i, runTimeArray[i], testPayloadArray[i]); 
     runMergeSort(i, runTimeArray[i], testPayloadArray[i]); 
     runMergeSort1(i,runTimeArray[i], testPayloadArray[i]); 
     runHeapSort(i, runTimeArray[i], testPayloadArray[i]); 
    } 
    testReport(); 
+0

Ja 'runTimeArray [1] [2]' die dritte Position in der 2. Reihe darstellt. –

Antwort

0

Ja runTimeArray[1][2] repräsentiert 3. Platz in der 2. Reihe.

Auch für Ihre sortedDescending Array, können Sie wahrscheinlich nur Schleife folgende

for(int i = 0; i < arrayLength; i++){ 
    sortedDescending[i] = arraylength - i; 
} 

Auch wenn Sie gerade nur die Ausführungszeit speichern möchten in Ihrem runTimeArray Sie die Signatur jeder Art Methoden ändern können gib die Zeit zurück und speichere sie direkt in deiner Schleife.

so zum Beispiel können Sie Ihre Schleife wie

for (int i = 0; i < 4; i++) { 
    runTimeArray[i][0] = runBubbleSort(testPayloadArray[i]); 
    runTimeArray[i][1] = runSelectionSort(testPayloadArray[i]); 
} 

sein und die Methoden sein könnten wie

private long runSelectionSort(int[] ints) { 

    return endTime - StartTime;; 
} 

private long runBubbleSort(int[] ints) { 
    return endTime - StartTime;; 
}