帮忙看看这个简单的程序哪溢出了?

来源:百度知道 编辑:UC知道 时间:2024/06/04 12:56:17
public class a1 {
public static void main(String[] args)
{
int a[]={1,5,6,7,10,16,20};
int b[]={2,4,6,8,10};
bb(a,b);

}

public static void bb(int a1[],int b1[])
{
int m=a1.length;
int n=b1.length;

int c[]=new int[a1.length+b1.length];
int i=0,j=0,k=0;
while(i<m && j<n)
{
if(a1[i]>b1[j])
c[k++]=b1[j++];
else
c[k++]=a1[i++];
while(k<=m+n-1)
{
if(i<=m-1)
c[k++]=b1[j++];
if(j<=n-1)
c[k++]=a1[i++];
}
}
for(k=0;k<=m+n-1;k++)
System.out.print(c[k]+" ");

}
}

package helpweb;

public class a1 {
/* 在main方法中定义二个数组并调用bb() */
public static void main(String[] args) {
int a[] = { 1, 5, 6, 7, 10, 16, 20 };
int b[] = { 2, 4, 6, 8, 10 };
bb(a, b);

}

public static void bb(int a1[], int b1[]) {
int m = a1.length;
int n = b1.length;

int c[] = new int[a1.length + b1.length]; // 用来合并a1,b1
int i = 0, j = 0, k = 0;
while (i < m && j < n) // while循环比较大小
{
if (a1[i] > b1[j]) // 如果a1的第i个元素大于b1的第j个元素则c的第k个元素等于b1的第j个元素且k,j加1
c[k++] = b1[j++];
else
c[k++] = a1[i++]; // 反之才c的第k个元素等于a1的第i个元素且k,i加1
/* 考虑到二个数组可能长度不一,而二数组又是从小到大排列的。所以将没有比较完的数直接放入c数组中 */

}
while (k <= m + n - 1) {
if (i <= m - 1){
c[k++] = a1[i++];
}
if (j <= n - 1)
c[k++] = b1[j++];
}
for (k = 0; k <= m + n - 1; k++)
//输出C数组。m代表数组a1的长度,n代