两个数组的合并函数

时间:2017-08-18 12:51:49

标签: arrays sorting merge mergesort

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

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

2 个答案:

答案 0 :(得分:0)

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问题的编辑解决方案。

答案 1 :(得分:0)

虽然上面提到了代码的修复,但这只是进行合并和排序的很多行。如果您知道自己将处理数字,则可以使用以下内容:

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;
    });
}