public static int[] merge(int arr1[], int arr2[]) {
int x = arr1.length + arr2.length;
int[] arr3= new int[x];
x=0;
int i =0, j=0;
while ( i<arr1.length||j<arr2.length)
{
if(arr1[i]<arr2[j])
{
arr3[x]= arr1[i];
i++;
x++;
}
else
{
arr3[x]=arr2[j];
j++;
x++;
}
}
return arr3;
}
有人能解释一下这个节目有什么问题吗?
如果一个数组为空,如何合并数组?
example:-
给定输入:-1st的数组大小=5
1 2 3 4 5
第二个的数组大小=0
2条答案
按热度按时间jbose2ul1#
简短版本:
自己实施:
也许您应该检查其中一个数组是否为null,如果某个数组比另一个数组长,还应该移动剩余的数组。另外,在检查是否到达数组末尾时,也许应该使用&&而不是| |来避免异常
gc0ot86w2#
让我们对你的程序进行一次试运行。假设arr1={2}和arr2={1,3}。
声明和初始化部分是正确的。
现在控制传递到循环
检查第一个条件。
程序控制传递给else并执行以下所有语句。
现在循环中的下一次i=0,j=1,x=1。再次记住,如果条件被检查。这次是2<3。返回true并执行下面的部分。
现在在循环中,i=1,j=1,x=2的值。麻烦就从这里开始。
如果条件已检查。
发生这种情况是因为当i的值达到其长度时,必须停止检查条件。
在while循环中使用这个,
对于问题的第二部分,只需检查数组是否为null。
我希望我帮了你。