用相邻元素连接两个数组

时间:2014-09-16 10:26:58

标签: arrays join

我有两个不同大小的整数数组。 我还有第三个整数数组。 我想从前两个数组中取出每个元素,并将它们一个接一个地存储在新数组中。

这是我的代码

int[] a = { 1, 2, 3 };
int[] b = { 5, 6, 7, 8 };
int[] c = new int[100];
int i = 0, j = 0, k, m;
for (k = 0; k < a.Length + b.Length; k=k+2)
{
    while (i < a.Length)
    {
        c[k] = a[i];
        i = i + 1;
        break;
    }
    while (j < b.Length)
    {
        c[k + 1] = b[j];
        j = j + 1;
        break;
    }
}
for (m = 0; m <= a.Length + b.Length; m++)
{
    Console.Write(c[m] + " ");
}

现在此代码不会产生所需的输出。第二个到最后一个元素变为0,因为此时第一个数组已经结束。

我想要的输出是{ 1, 5, 2, 6, 3, 7, 8 } 而我得{ 1, 5, 2, 6, 3, 7, 0, 8 }

1 个答案:

答案 0 :(得分:0)

你真的不需要嵌套循环,这个算法可能更优: 决定哪个是更短的循环,并复制更短和更长的阵列&#39;值。然后经历较长时间的其余部分。

如果a和b首先出现哪一个然后使用它们的最小长度而不是数组。

int[] a = { 1, 2, 3 };
int[] b = { 5, 6, 7, 8 };
int[] c = new int[a.length + b.length];
int[] shorter = a.length < b.length ? a : b;
int[] longer = a.length < b.length ? b : a;
for (int i = 0; i < shorter.length; i++) {
  c[2*i] = shorter[i];
  c[2*i+1] = longer[i];
}
for (int i = shorter.length; i < longer.length; i++) {
  c[shorter.length+i] = longer[i];
}

 for (int m = 0; m < c.length; m++)
 {
     System.out.println(c[m] + " ");
 }