【问题标题】:Merge Function for two arrays两个数组的合并函数
【发布时间】:2018-01-27 04:04:48
【问题描述】:

合并两个数组的函数,该函数无法正常工作,并且没有给出所需的答案。我希望将排序后的数组合并起来,因为它是函数所说的,但它不起作用。

var Merge = function(array,array1,array2)
{
    var n_array = array.length;
    var n_array1 = array1.length;
    var i = j = k = 0;
    while(i < n_array && j < n_array1)
    {
        if(array[i] <= array2[j])
        {
            array2[k] = array[i];
            i = i + 1;
        }
        else
        {
            array2[k] = array1[j];
            j = j + 1;
        }
        k = k + 1;
    }
    while(i < n_array)
    {
        array2[k] = array[i];
        i = i + 1;
        k = k + 1;
    }
    while(j < n_array1)
    {
        array2[k] = array1[j];
        j = j + 1;
        k = k + 1;
    }
    return array2;
};

array = [1,3,5,7];
array1 = [2,4,6,8];
array2 = [];
var result = Merge(array,array1,array2);
console.log("The array is sorted is " + result);

为什么我的代码给出了答案: 数组排序为2,4,6,8,1,3,5,7

【问题讨论】:

    标签: arrays sorting merge mergesort


    【解决方案1】:
    var Merge = function(array,array1,array2)
    {
        var n_array = array.length;
        var n_array1 = array1.length;
        var i = j = k = 0;
        while(i < n_array && j < n_array1)
        {
            if(array[i] <= array1[j])
            {
                array2[k] = array[i];
                i = i + 1;
            }
            else
            {
                array2[k] = array1[j];
                j = j + 1;
            }
            k = k + 1;
        }
        while(i < n_array)
        {
            array2[k] = array[i];
            i = i + 1;
            k = k + 1;
        }
        while(j < n_array1)
        {
            array2[k] = array1[j];
            j = j + 1;
            k = k + 1;
        }
        return array2;
    };
    
    array = [1,3,5,7];
    array1 = [2,4,6,8];
    array2 = [];
    var result = Merge(array,array1,array2);
    console.log("The array is sorted is " + result);
    

    它有效:) 这是 OP 问题的编辑解决方案。

    【讨论】:

    • 赋值是不使用push之类的功能,Whats wrong in above logic can you explain above code of mine , Why I dont 得到解决方案
    • 现在它返回但没有对数组进行排序。
    • 我能发现的最后一个问题是您在第一个 if 语句中打错了字。您将arrayarray2 进行比较,而不是array1
    【解决方案2】:

    虽然上面提到了对代码的修复,但仅用于合并和排序就需要很多行。如果您知道您将处理数字,则可以使用以下内容:

    var arr = [1, 10, 22];
    var arr1 = [20, 17, 3];
    var arr2 = arr.concat(arr1);
    
    sortAsc(arr2);
    
    function sortAsc(arrayToSort){
        return arrayToSort.sort(function(a, b){
            return a - b;
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 2016-12-16
      • 2011-09-25
      • 2019-05-22
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多