我已经有几年没有上过任何编程课程了,所以请原谅任何初学者的错误/做某事的方法。我喜欢对未来的建议。使用下面的代码,我试图检查两个数组的值(已经排序)并将它们放入一个组合数组中。我的解决方案,无论多么低效/草率,是使用 for 循环来比较每个数组在 j 处的索引的内容,然后将较低的值分配给 combineArray 的索引 i,将较高的值分配给索引 i+1。我将 i 增加 2 以避免覆盖前一个循环的索引。
int sortedArray1 [5] = {11, 33, 55, 77, 99};
int sortedArray2 [5] = {22, 44, 66, 88, 00};
combinedSize = 10;
int *combinedArray;
combinedArray = new int[combinedSize];
for(int i = 0; i <= combinedSize; i+=2)
{
for(int j = 0; j <= 5; j++)
{
if(sortedArray1[j] < sortedArray2[j])
{
combinedArray[i] = sortedArray1[j];
combinedArray[i+1] = sortedArray2[j];
}
else if(sortedArray1[j] > sortedArray2[j])
{
combinedArray[i] = sortedArray2[j];
combinedArray[i+1] = sortedArray1[j];
}
else if(sortedArray1[j] = sortedArray2[j])
{
combinedArray[i] = sortedArray1[j];
combinedArray[i+1] = sortedArray2[j];
}
}
}
for(int i = 0; i < combinedSize; i++)
{
cout << combinedArray[i];
cout << " ";
}
我的结果是这样的
Sorted Array 1 contents: 11 33 55 77 99
Sorted Array 2 contents: 0 22 44 66 88
5 77 5 77 5 77 5 77 5 77 Press any key to continue . . .
在我缺乏经验的头脑中,排序的实现看起来不错,所以我不确定为什么我会得到这个糟糕的输出。建议会很棒。