大家好,我正在尝试使用数组进行排序,请检查我的代码
public int[] Sort(int[] arr) {
int[] value = arr;
int min, temp, out;
for (out = 0; out < value.length - 1; out++) {
for (min = out + 1; min < value.length; min++) {
if(value[out] > value[min]){
temp = value[min];
value[min] = value[out];
value[out] = temp;
}
}
}
return value;
}
这里的问题是我将数组“arr”值传递给数组“value”并对“value”数组进行排序,然后输出就是我所期望的,他对数字进行了排序,但问题是,当我尝试返回“arr”数组,它也返回一个排序值,即使我没有尝试对其进行排序..这是一个错误还是只是我丑陋的编码?
最佳答案
当您进行赋值int[] value = arr
时,您为value
提供了与arr
相同的引用。这意味着赋值,例如 value[1]
将影响原始数组。如果您想返回一个新排序数组而不影响原始数组,那么您可以尝试复制它:
public int[] Sort(int[] arr) {
int[] value = new int[arr.length];
System.arraycopy(arr, 0, value, 0, arr.length);
// ...
return value;
}
关于java - 传递数组并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716161/