访问数组java

时间:2016-11-12 23:15:00

标签: java arrays multidimensional-array

在下面的代码中我创建了两个数组,两个数组都是数组。

第一个数组testPayloadArray应该在testPayloadArray的i位置传递整个数组。

runTimeArray应该在数组的i位置内传递数组,然后在该数组中填充由其使用的方法确定的运行时值。

我的执行是不正确的,我承认,我不确定如何继续前进。

我的想法是[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();

1 个答案:

答案 0 :(得分:0)

runTimeArray[1][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;;
}