gpt4 book ai didi

c++ - 有序合并问题

转载 作者:行者123 更新时间:2023-11-30 02:26:04 25 4
gpt4 key购买 nike

我的程序有点问题,我无法解决问题所在。基本上,有两个按升序排序的数组,我必须将它们合并为一个。

我希望输出是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

但它是:

1 2 3 4 5 6 7 8 9 10 11 12 13 0

我做错了什么,输出中的最后一个值不是 14?我认为解决此问题的方法非常简单,但我想不出来。

代码如下:

#include<iostream>
#include<cstdlib>
using namespace std;

int main(){

int arrA[]={1,3,5,7,9,11,13};
int arrB[]={2,4,6,8,10,12,14};
int arrC[sizeof(arrA)/sizeof(int)+sizeof(arrB)/sizeof(int)];

int sizeA=sizeof(arrA)/sizeof(int);
int sizeB=sizeof(arrB)/sizeof(int);
int sizeC=sizeof(arrC)/sizeof(int);

for (int i=0;i<sizeA;){
for (int j=0;j<sizeB;){
if (arrA[i]<=arrB[j]){
arrC[i+j]=arrA[i++];
}
else{
arrC[i+j]=arrB[j++];
}
}
}

for (int i=0; i<sizeC; i++){
cout << arrC[i] << " ";
}
return 0;
}

最佳答案

实际上,您永远不会达到将值分配给最后 14 个元素的 arrC[13] 的地步。在外循环的最后一次迭代中, i==6 和内循环相同。所以当 i+j 等于 12 时你结束。

关于c++ - 有序合并问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352282/

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