编写一个函数,将两个已排序的列表合并为一个新的排序列表。 [1,4,6],[2,3,5]→[1,2,3,4,5,6]。你可以更快地连接它们,然后进行排序。
我的代码出了问题。它在结果中给出了1,2,3,4,5,5
save
答案 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;
}