Java 如何解决此整数数组排序无法按预期工作的问题?

Java 如何解决此整数数组排序无法按预期工作的问题?,java,arrays,Java,Arrays,尝试过这样做,但仍然无法按升序排序。 此方法的目的是接收整数数组,并使用输入整数数组的值创建新的整数数组。然后对新创建的数组进行排序。但这种排序方法似乎不起作用 private static int[] getSortAscend(int[] inputArray) { int sortArray[] = inputArray; int lngth = sortArray.length; for(int m = 0; m < lngth; m++) {

尝试过这样做,但仍然无法按升序排序。 此方法的目的是接收整数数组,并使用输入整数数组的值创建新的整数数组。然后对新创建的数组进行排序。但这种排序方法似乎不起作用

private static int[] getSortAscend(int[] inputArray) {
    int sortArray[] = inputArray;
    int lngth = sortArray.length;
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}
private static int[]getSortAscend(int[]inputArray){
int-sortArray[]=输入阵列;
int lngth=sortArray.length;
对于(int m=0;msortArray[p]){
int temp=Sortaray[m];
sortArray[m]=sortArray[p];
Sortaray[p]=温度;
}
}
}
返回Sortaray;
}

这可能是由于您执行了
int-sortArray[]=inputArray
,您的
sortArray
指向输入的一个,由于您正在修改它,您的算法将无法工作(因为数字将不断变化)

试试这个:

private static int[] getSortAscend(int[] inputArray) {
    int lngth = sortArray.length;
    int sortArray[] = inputArray.clone();
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}
private static int[]getSortAscend(int[]inputArray){
int lngth=sortArray.length;
int-sortArray[]=inputArray.clone();
对于(int m=0;msortArray[p]){
int temp=Sortaray[m];
sortArray[m]=sortArray[p];
Sortaray[p]=温度;
}
}
}
返回Sortaray;
}

当您设置
int-sortArray[]=inputArray时它不会创建一个新数组,而只是引用同一个数组。另外,您不需要单独获取数组的长度,只需调用
sortArray.length
即可获取长度:

private static int[] getSortAscend(int[] inputArray) {
    int sortArray[] = inputArray.clone();
    for (int m = 0; m < sortArray.length; m++) {
        for (int p = m + 1; p < sortArray.length; p++) {
            if (sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    return sortArray;
}
private static int[]getSortAscend(int[]inputArray){
int-sortArray[]=inputArray.clone();
for(int m=0;msortArray[p]){
int temp=Sortaray[m];
sortArray[m]=sortArray[p];
Sortaray[p]=温度;
}
}
}
返回Sortaray;
}

您能给出一个输入和输出示例吗?是否仅对数组进行排序?
int-sortArray[]=inputArray不创建新数组;它只是共享了一个对
输入阵列的引用
。哎呀,几个小时以来,我一直在一遍又一遍地盯着并重新键入同一个东西,以确保我没有做错什么。原来是关于参考。由于答案,您必须将
inputArray
项复制到
sortedArray
。我明白了。必须使用for循环复制内容。