gpt4 book ai didi

c++ - 按升序合并两个数组(两个数组大小相同)

转载 作者:行者123 更新时间:2023-11-27 23:11:57 24 4
gpt4 key购买 nike

我和我的 friend 正在为合并函数而苦苦挣扎。它要求两个数组具有相同的大小,因此合并后的数组数量是原来的两倍。这是我们目前所拥有的:

void mergeTwoSortedArrays(const int a1[], const int a2[], int mergedArray[], int n) 
{
int i = 0;
int j = 0;
int k = 0;

while (i <= n && j <= n)
{
if (a1[i] == a2[j])
{
mergedArray[k] = a1[i];
mergedArray[k] = a2[j];
i++;
j++;
}
k++;
}
}

但是它不起作用。有什么建议吗?

最佳答案

这是为了归并排序还是什么?通常的方法是进行组合合并,就像您已经做过的那样,然后是一个拷贝。这是第一部分。你有点困惑。通读本文,您会发现它是有道理的:

while (i < n && j < n) {
if (a1[i] <= a2[j]) {
mergedArray[k++] = a1[i++];
} else {
mergedArray[k++] = a2[j++];
}
}

然后你处理剩下的元素。显然,当只有一个数组到达末尾时,循环结束。所以现在你需要两个更简单的循环。只有一个会执行——不需要复杂的测试:

while (i < n) mergedArray[k++] = a1[i++];
while (j < n) mergedArray[k++] = a2[j++];

我把你的测试变成了<而不是 <= ,因为数组是从零开始的。

关于c++ - 按升序合并两个数组(两个数组大小相同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com