Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何以使两个阵列均匀分布的方式组合两个阵列?_Arrays_Algorithm - Fatal编程技术网

Arrays 如何以使两个阵列均匀分布的方式组合两个阵列?

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

举个例子比用文字解释要容易得多。 从2个阵列开始:

{a,a,a,a,a,a}和{bbb}

我希望输出为:

{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;
        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)值,以使分布均匀。