Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C中合并2个排序数组_C++_C_Sorting_Array Merge_Array Algorithms - Fatal编程技术网

C++ 在C中合并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&

我正在编写合并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< 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);