通过交替元素混合两个数组(拉链样式)

Bri*_*hey 5 algorithm

什么是优雅的算法来混合两个数组(可能有不同大小)的元素,以便从每个数组以交替的方式绘制项目,剩余的添加到结尾?

例如

阵列1-A,B,C,D,E,F,G

阵列2 - 1,2,3,4

混合阵列 - A,1,B,2,C,3,D,4,E,F,G

我更喜欢C#中的解决方案,但我应该能够以任何语言(甚至某种形式的伪代码)读取和转置解决方案.

不要担心空检查或任何其他边缘情况,我会处理这些.

Rya*_*ham 8

你的意思是什么?

// naive/boring approach
int i = 0;
int m = 0;
while (i < a1.size() || i < a2.size()) {
    if (i < a1.size())
        mixed[m++] = a1[i];
    if (i < a2.size())
        mixed[m++] = a2[i];
    i++;
}
Run Code Online (Sandbox Code Playgroud)

如果使用它,您可能希望将数组长度存储在变量中,这样您就不必继续调用size()方法(或者使用您使用的任何语言).