我刚刚编写了这段代码我希望它将两个Arrays合并在一起并对其进行排序..我已经改变了很多代码,我认为我的错误是在方法array_intil()中......但是我可以找不到......谢谢所有
public class Test3 {
public int [] array_erz(int[]A1,int[]A2){
int []neu=new int[A1.length+A2.length];
return neu;
}
public void swap(int[]values,int i,int k){
int temp;
temp=values[i];
values[i]=values[k];
values[k]=temp;
}
public int [] array_intil(int [] neu,int[]A1,int []A2){
for (int i=0;i<A1.length;i++){
neu[i]=A1[i];
for (int k=A1.length;k<neu.length;k++){
neu[k]=A2[i];
}}
return neu;
}
public int[] sort(int[] neu){
for (int i=0;i<neu.length;i++){
for (int k=neu.length-1;k>i;k--){
if (neu[i]>neu[k]){
swap(neu,i,k);
}
}
}
return neu;
}
public static void main (String[]args){
int [] A1={7,0,12,738};
int []A2={14,105,2,13,404,1,15,130};
Test3 t=new Test3();
int [] A3=t.array_erz(A1, A2);
t.array_intil(A3, A1, A2);
t.sort(A3);
for (int i=0;i<A3.length;i++){
System.out.print(A3[i]+",");
}
}
}
控制台的结果是:0,7,12,13,13,13,13,13,13,13,13,738,
答案 0 :(得分:1)
你有一个嵌套循环多次添加A2,请尝试以下更改:
public int [] array_intil(int [] neu,int[]A1,int []A2){
for (int i=0;i<A1.length;i++){
neu[i]=A1[i];
}
for (int k=A1.length;k<neu.length;k++){
neu[k]=A2[k-A1.length];
}
return neu;
}
同样总是保持你的代码格式良好的标签,我几乎错过了嵌套的for循环因为它们缩进相同!
答案 1 :(得分:0)
你是对的,你的array_intil方法有问题。在您的程序中,第二个for循环将在第一个循环的每次迭代中执行
修改您的方法如下:
public int [] array_intil(int [] neu,int[]A1,int []A2){
int i=0;
for (i=0;i<A1.length;i++){
neu[i]=A1[i];
}
int m=0;
for (i=A1.length;i<neu.length;i++){
neu[i]=A2[m];
m++;
}
return neu;
}
Now correct/modify your sorting/swapping algo.