Arrays 如何以使两个阵列均匀分布的方式组合两个阵列?
举个例子比用文字解释要容易得多。 从2个阵列开始: {a,a,a,a,a,a}和{b,b,b} 我希望输出为: {a,a,b,a,a,b,a,a,b,a} 在一点帮助下,我发现了以下几点:Arrays 如何以使两个阵列均匀分布的方式组合两个阵列?,arrays,algorithm,Arrays,Algorithm,举个例子比用文字解释要容易得多。 从2个阵列开始: {a,a,a,a,a,a}和{b,b,b} 我希望输出为: {a,a,b,a,a,b,a,a,b,a} 在一点帮助下,我发现了以下几点: let result = []; let ratio = array1.length / array2.length; let pushA = 0; while (array2.length >0) { pushA+= ratio; whi
let result = [];
let ratio = array1.length / array2.length;
let pushA = 0;
while (array2.length >0) {
pushA+= ratio;
while (pushA >= 1){
result.push(array1.pop());
pushA--;
}
result.push(array2.pop());
}
return result;
稍微非传统的方式: 对于坐标为
(0,0)-(A.Length,B.Length)
当x增加时-插入“a”,当y-插入“b”(一般情况下-使用对应数组中的下一个索引)对于简单的应用程序,您可以找到两个数组的大小。例如,假设第一个数组的大小为M,第二个数组的大小为N。还假设M>=N(如果不是,您可以交换两个数组) 现在,在从第二个数组插入一个元素之前,您可以很容易地找到要插入的第一个数组的全部元素,这等于:M/N(=K)
因此,在合并时,您可以从第一个数组中插入K个元素,然后从第二个数组中插入一个元素,依此类推,直到两个数组中都存在元素。谢谢!这听起来很合乎逻辑,但您是否可以编写一个使用两个数组的版本?修改算法有什么不清楚的地方对于从x0到x1`的x,在这之后插入一个数组<代码>y=y+1-在该代码之后插入b;然后删除
plot(x,y)
您的示例不够清晰。如果您有{a,a,a}
和{b}
,您是否期望{a,a,b,a}
或{a,a,a,a,b}
?是否检查了不同大小数组的此代码?该代码应适用于不同大小,但会导致{a,a,a,b}或{b,b,b},具体取决于您将它们放入的顺序。Richard的{a,a,b,a,a}将是最优的,但我不知道如何达到这一点。Bresenham算法特别旨在通过两个坐标均匀分布步长。这很有效。引擎盖下是自动调节的优先队列。非常感谢,完成了<代码>让结果=[];let ratio=array1.length/array2.length;设pushA=0;而(array2.length=1){result.push(array1.pop());push--;}result.push(array2.pop());}返回结果代码>这听起来合法吗?while循环中使用的条件需要一些更改,否则一切都可以。此解决方案旨在实现上述简单应用,否则,我们应该在每次迭代中特别考虑(M%N)值,以使分布均匀。