2016-11-12 2 views
0

в коде ниже Я создал два массива, оба из которых содержат массивы.доступ к массиву массивов java

Первый массив testPayloadArray должен передать весь массив в i-й позиции testPayloadArray.

runTimeArray предполагается передать массив в пределах я постион массива, а затем в пределах этого массива заселить значение времени выполнения determinded методом он используется в.

Мое исполнение довольно неправильно, я признаю, я не уверен, как двигаться вперед, хотя.

Моя мысль заключается в том, что [i] [j] - лучший способ сделать это. Где i соответствует положению в первом массиве, а j соответствует позиции во втором. поэтому, если бы я хотел заполнить третью позицию во втором массиве в runTimeArray, код будет выглядеть так, я прав?

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

код ниже:

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

Да 'runTimeArray [1] [2]' представляет собой 3-ю позицию в 2-ом массиве. –

ответ

0

Да runTimeArray[1][2] представляет собой 3-е место в 2-ом массиве.

Кроме того, для вашего массива sortedDescending, вероятно, можно просто иметь следующий цикл

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

Кроме того, если вы просто хотите, чтобы просто сохранить время выполнения в вашей runTimeArray вы можете изменить подпись каждого метода сортировки на вернуть время и сохранить его в вашем цикле напрямую.

так, например, ваш цикл может быть как

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

и методы могут быть как

private long runSelectionSort(int[] ints) { 

    return endTime - StartTime;; 
} 

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