我需要遍历 a 和 b 数组,将 a 和 b 中的元素复制到组合中,以使组合最终被排序。
例如,如果 a 是 {3, 5, 7, 7, 9},b 是 {2, 5, 8, 1234}(所以 combo 必须有 9 个元素),那么这个函数会将 combo 设置为 {2, 3, 5、5、7、7、8、9、1234}。我需要有效地做到这一点:当我将值放入组合中时,我需要将它们放在正确的位置;不要随意,稍后重新排列它们。
我在 while 循环中尝试了一个嵌套的 for 循环,但我得到了一些奇怪的结果。我似乎无法找到超越最低数字的方法。例如,一旦我将最小的数字添加到组合数组中,我就无法弄清楚如何丢弃它本身。谢谢您的帮助。
void merge(
unsigned combo[],
const unsigned a[],
unsigned aElements,
const unsigned b[],
unsigned bElements
){
if (mySort(a, aElements) == 0) {
cout << "The first array is not sorted";
exit(1);
}
if (mySort(b, bElements) == 0) {
cout << "The second array is not sorted";
exit(1);
}
unsigned combinedElements;
unsigned lowest = 0;
unsigned i = 0;
combinedElements = aElements + bElements;
while (i < combinedElements) {
for (int n = 0; n < combinedElements; n++) {
if (a[i] < b[n]) {
lowest = a[i];
}
else {
lowest = b[n];
}
}
combo[i] = lowest;
i++;
cout << combo[i] << endl;
}
}