2016-12-22 70 views
-8

什么是合并两个未分类数组而不使用第三个数组的C代码是什么? 例如 array1 = {1,3,5,7} array2 = {2,4,6} 输出应该是 array1 = {1,2,3,4,5,6,7}。不使用第三个数组合并两个数组

这是我写的代码。但是,如果数组元素的数量在两个数组中都是相同的,那么这种方法是行不通的。让我帮助我解决这个错误。

void merge(int a[],int b[],int ele1,int ele2) 
{ 
int i,j,k,ele3; 
ele3=ele1+ele2; 
for(i=1,k=0;k<ele2;i=i+2) 
{ 
    j=ele1; 
    while(j>=i) 
    { 
     a[j]=a[j-1]; 
     j--; 
    } 
    a[j+1]=b[k]; 
    k++;ele1++; 
} 
for(i=0;i<ele3;i++) 
printf("%d ",a[i]); 
} 

main() 
{ 
int a[]={1,3,5},b[]={2,4},ele1,ele2; 
ele1=sizeof(a)/sizeof(a[0]); ele2=sizeof(b)/sizeof(b[0]); 
merge(a,b,ele1,ele2); 
} 
+3

是否有任何人第2个阵列有足够的空间来容纳? –

+0

问题中没有提及任何内容。这是我得到的一个采访问题。他们说你想问我是否有内存 –

+0

你说未排序的数组,但给出的例子是用于排序数组。 –

回答

1

它可以很容易地完成,如果阵列中的任何一个能够保持所有元素,否则这是可以做到,如果阵列中的任何一个是动态的阵列,在动态阵列,我们可以改变大小的情况下通过使用realloc左右,经过该阵列的我们很容易

合并它的解决方案就会像[不进行测试,其可能的答案]

void merge(int ar1[], int ar2[]) 
{ 
    int len = ar1.length; 
    int totalLength= (ar1.length+ar2.length); 
    ar1= (int*)realloc(ar1,(totalLength)*sizeof(int)); 

    for (int i=len,index=0; i<totalLength; i++) 
    { 

    ar1[i]=ar2[index]; 
    index++; 

    } 
} 
+0

@kiran ..... dat不工作。 –

+0

错误是什么? –

+0

你试过了吗? –

相关问题