a と b の配列を調べて、a と b の要素をコンボにコピーし、コンボがソートされるようにする必要があります。
たとえば、a が {3, 5, 7, 7, 9} で、b が {2, 5, 8, 1234} の場合 (したがって、コンボには 9 つの要素が必要です)、この関数はコンボを {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;
}
}