1

我有问题。在我的主要课程中,我有:

int  ints[] = Type.desc(1000);
int  auxi[] = new int [1000];
auxi = ints;

System.out.println("========== Init =========");
// Insertion Sort
Algoritmos.insertionSort(ints);
ints = auxi;

desc 方法是:

public static int[] desc (int n){
    int aux[];
    aux = new int[n];
    int pos = 0;
    for (int i = n-1; i > 0; i--) {
        aux[pos++] = i;
    }

    return aux;
}

ints 和 auxi 的值被改变。

如何保存向量整数的初始值?

4

4 回答 4

3

如何保存向量整数的初始值?

制作数组的副本,如下所示:

int[] copy = new int[orig.length];
System.arraycopy(orig, 0, copy, 0, orig.length);

请注意,这会生成数组的浅表副本。原语无关紧要,但对于引用类型,您可能需要做更多的工作来制作副本。

于 2013-06-25T02:16:53.363 回答
2
int  ints[] = Type.desc(1000);
int  auxi[] = new int [1000];
auxi = ints;

如何保存向量整数的初始值?

不要将其分配给另一个变量。上面第二行中的初始化毫无意义,因为然后您继续分配intsauxi. 此步骤不复制数组,它只是复制引用。如果要保留原始数组,请将第三行更改为复制元素的循环,或使用Arrays.copyOf()or System.arraycopy()

于 2013-06-25T02:16:46.597 回答
1

而不是这样做

auxi = ints;

采用

System.arrayCopy()
于 2013-06-25T02:16:09.003 回答
0

你可以使用

int [] original_array_backup = new int [ints.length]
System.arraycopy(ints, 0, original_array_backup, 0)

因此,您可以将 original_array_backup 传递到您的算法中,而不会丢失 ints 数组的数据和顺序。

于 2013-06-25T02:58:56.297 回答