C++ 在C中合并2个排序数组
我正在编写合并2个排序数组的代码,代码如下C++ 在C中合并2个排序数组,c++,c,sorting,array-merge,array-algorithms,C++,C,Sorting,Array Merge,Array Algorithms,我正在编写合并2个排序数组的代码,代码如下 void main() { int a[]={7}; int b[] = {8}; int ret; int *c; merge(a,b,c,1,1); } void merge(int *a, int *b,int *sorted, int i, int j) { int c1,c2,k=0; c1=0; c2=0; for(k=0;c1<i && c2&
void main()
{
int a[]={7};
int b[] = {8};
int ret;
int *c;
merge(a,b,c,1,1);
}
void merge(int *a, int *b,int *sorted, int i, int j)
{
int c1,c2,k=0;
c1=0;
c2=0;
for(k=0;c1<i && c2< j;k++)
{
if(a[c1]<b[c2])
sorted[k]=a[c1++];
else
sorted[k]=b[c2++];
}
while(c1<i)
sorted[k++]=a[c1++];
while(c2<j)
sorted[k++]=b[j++];
}
如何修复它问题是您没有提供任何空间来放置合并的信息。您为排序参数提供了一个未初始化的指针c,它在函数中被取消引用,从而导致未定义的行为 要解决此问题,请传递一个具有足够容量的数组以容纳合并数组的元素:
int a[]={7, 15, 20};
int b[] = {8, 12, 19, 32};
int c[7];
merge(a, b, c, 3, 4);
您没有为c分配任何内存。请在初始化时或通过malloc.BTW为数组c分配一些空间,键入:sorted[k++]=b[j++];应排序为[k++]=b[c2++];最好使用size_a或len_a代替主要用作本地计数器的i,j。
int a[]={7, 15, 20};
int b[] = {8, 12, 19, 32};
int c[7];
merge(a, b, c, 3, 4);