1

我不明白为什么 java 认为数组“thisRow”在传递给 Arrays.sort(thisRow) 时是无效的。“thisRow”对我来说似乎是一个 int[]。这里有什么问题?

错误消息:“类型不匹配:无法在 Test.mySort(Test.java:57) 处从 void 转换为 int[]”

private static int[][] mySort(int[][] anArray) {
    for(int i = 0; i < anArray.length; i++){
        int thisRow[] = getRow(anArray, i);
        int[] sorted = Arrays.sort(thisRow);
    }
}

//This method will get the specified row out of the array.
private static int[] getRow(int[][] anArray, int row) {
    int thisRow[] = new int[anArray[row].length];
    for(int j = 0; j < anArray[row].length; j++){
        thisRow[j] = anArray[row][j];
    }
    return thisRow;
}
4

3 回答 3

15

Arrays.sort返回voidint[]类型。

根据 javadoc

将指定的整数数组按数字升序排序。排序算法是一种调整过的快速排序,改编自 Jon L. Bentley 和 M. Douglas McIlroy 的“Engineering a Sort Function”,Software-Practice and Experience,Vol。23(11) P. 1249-1265(1993 年 11 月)。该算法在许多数据集上提供 n*log(n) 性能,导致其他快速排序降低到二次性能

代替

int[] sorted = Arrays.sort(thisRow);

Arrays.sort(thisRow);
于 2012-11-14T16:13:40.463 回答
3

Arrays.sort就地对数组进行排序(通过改变现有对象),并且不返回任何内容。因此你应该更换

int[] sorted = Arrays.sort(thisRow);

简单地

Arrays.sort(thisRow);
于 2012-11-14T16:14:11.167 回答
1

Arrays#sort不返回int[],它返回void,它对源数组本身进行排序。

将指定的整数数组按数字升序排序。排序算法是一种调整过的快速排序,改编自 Jon L. Bentley 和 M. Douglas McIlroy 的“Engineering a Sort Function”,Software-Practice and Experience,Vol。23(11) P. 1249-1265(1993 年 11 月)。该算法在许多数据集上提供 n*log(n) 性能,导致其他快速排序降低到二次性能。

于 2012-11-14T16:14:51.943 回答