1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
int* fusion(int A[],int B[])
{
int i,j,k,L=N+M;
int *p=NULL;
p=(int*)malloc(L*sizeof(int));
if (!p) //équivalent à if (p==NULL)
{return(p);}
for(i=0,j=0,k=0;i<N,j<M,k<L;k++)// si une des 3 conditions n'est pas vérifiée
{ // alors sortie de la boucle
if (A[i]<=B[j]) // (c'est dans le cas où on aurait vidé un tableau avant)
{
p[k]=A[i];
printf ("(1)k=%d,i=%d,A[i]=%d, B[j]=%d\n",k,i,A[i], B[j]);
i++;
}
else
{
p[k]=B[j];
printf ("(2)k=%d,j=%d,B[j]=%d\n",k,j,B[j]);
j++;
}
if (i==N)
while (++k<L)
{
p[k]=B[j];
printf ("(3)k=%d,j=%d,B[j]=%d\n",k,j,B[j]);
j++;
}
else if (j==M)
while (++k<L)
{
p[k]=A[i];
printf ("(4)k=%d,i=%d,A[i]=%d\n",k,i,A[i]);
i++;
}
}
return(p);
} |