合并排序列表 - C#

时间:2018-03-05 20:57:15

标签: c#

编写一个函数,将两个已排序的列表合并为一个新的排序列表。 [1,4,6],[2,3,5]→[1,2,3,4,5,6]。你可以更快地连接它们,然后进行排序。

我的代码出了问题。它在结果中给出了1,2,3,4,5,5

save

1 个答案:

答案 0 :(得分:-1)

您想要检查您是否在阵列的末尾。如果是,您希望将最大数字放在最后一个索引处:

static int[] Func(int[] array1, int [] array2)
{
    int[] result = new int [array1.Length + array2.Length];

    int first =0; 
    int second = 0; 
    int current = 0;

    while (current < result.Length) 
    {
        if (array1[first] > array2[second])
        {
            if (current != result.Length - 1)
            {
                result[current] = array2[second];
            }
            else
            {
                 result[current] = array1[first];
            }

            if (second < array2.Length - 1) second++;
        }
        else if (array1[first] < array2[second])
        {
            result[current] = array1[first];
            if (first < array1.Length - 1) first++;
        }
        current++;
    }
    return result;
}

你也可以用这种方式实现它:

static int[] Func(int[] array1, int[] array2)
{
    int[] result = new int[array1.Length + array2.Length];

    Array.Copy(array1, result, array1.Length);
    Array.Copy(array2, 0, result, array1.Length, array2.Length);

    Array.Sort(result);

    return result;
}