只有一个注意事项,java的引用传递是传值的。
所以A=C是错的
必须使用for循环,依次修改数组对象A中的值,此时才能真正改变实参A
public void merge(int A[], int m, int B[], int n) {
int[] C=new int[m+n];
int i,j,k;
i=j=k=0;
while(i<m && j<n){
if(A[i]<B[j]){
C[k++]=A[i++];
}else{
C[k++]=B[j++];
}
}
while(i<m){
C[k++]=A[i++];
}
while(j<n){
C[k++]=B[j++];
}
//直接赋值是错的,只能使形参A指向数组对象C,并不会改变外面的实参A值
//A=C;
for (int l = 0; l < m+n; l++) {
A[l]=C[l];
}
}
京公网安备 11010502036488号