をマージするときに乱数を取得:Iは、例えば1に2つの配列をマージする2配列
- をA1 = 1,1
- A2 = 2,2
- 次いで、A3 = 1、たとえば2,1,2
:
- A1 = 1
- A2 = 2,2,2,2
- 次いでA3 =たとえば1,2,2,2,2
:
- A1 = 1,1,1,1 私は自分のコードを実行したときに
- A2 = 2,2
- は、A3 = 1,2,1,2,1,1 最後の例では
、私は、1,2,1,2を得ました1,20。
2番目に私は1,2,32767,2,2を得ました。
私は間違ったコードを持っていると思います。直後に、私は短い配列の要素を取り、A3の残りの部分を誰でも長くしていった。しかし、私はなぜ—あなたが私を助けることができるのか分かりませんでしたか?
コード:
int *p3=arr3; //arr3 is A3 for example, arr1 = A1..etc, all sizes are defined
int index;
int index1=0;
int index2=0;
for(index = 0; index< sizeofArr3 ; index++)
{
if(index%2==0)
{
if(index1<=sizeofArr1)
*(p3++) = arr1[index1++];
else
*(p3++) = arr2[index2++];
}
else
{
if(index2<=sizeofArr2)
*(p3++) = arr2[index2++];
else
*(p3++) = arr1[index1++];
}
}