PDA

View Full Version : [C] Merge di due vettori


guylmaster
02-12-2009, 21:13
Salve a tutti,
oggi studiavamo in classe un algoritmo di merge che facesse la fusione di due vettori ordinati in un terzo vettore, inserendoli sempre in modo ordinato.

Il punto č che gli algoritmi della professoressa come al solito non funzionano, e se cerco in internet "merge sort" mi esce la fusione di due vettori senza vettore di appoggio od altro, o comunque altri algoritmi molto pių complicati (e mi pare assurdo dover capire un algoritmo pių complicato per correggerne uno pių semplice che non funziona).

Mi chiedevo quindi, dopo svariati sforzi, se posso postarvi la codifica dell'algoritmo e magari gli date un occhiata:


int i,j,k;
k=0;
i=0;
j=0;
int a[]= {2,3,6};
int n = 3;
int b[]= {4,5,7,9};
int m = 4;
int c[7];
while(i<n && j<m)
{
if(a[i]<b[j])
{
c[k] = a[i];
i++;
} else {
c[k] = b[j];
j++;
}
k++;
}
while(i<n)
{
c[k] = a[i];
i++;
k++;
}
while(j<m)
{
c[k] = a[j];
j++;
k++;
}



Non fate caso ai cicli while utilizzati come cicli for, č semplicemente la professoressa che č fissata.

Vi ringrazio in anticipo,
guylmaster.

wingman87
02-12-2009, 21:20
L'errore č in rosso:
int i,j,k;
k=0;
i=0;
j=0;
int a[]= {2,3,6};
int n = 3;
int b[]= {4,5,7,9};
int m = 4;
int c[7];
while(i<n && j<m)
{
if(a[i]<b[j])
{
c[k] = a[i];
i++;
} else {
c[k] = b[j];
j++;
}
k++;
}
while(i<n)
{
c[k] = a[i];
i++;
k++;
}
while(j<m)
{
c[k] = a[j];
j++;
k++;
}
Dovrebbe essere "b", non "a"

guylmaster
02-12-2009, 21:38
L'errore č in rosso:
int i,j,k;
k=0;
i=0;
j=0;
int a[]= {2,3,6};
int n = 3;
int b[]= {4,5,7,9};
int m = 4;
int c[7];
while(i<n && j<m)
{
if(a[i]<b[j])
{
c[k] = a[i];
i++;
} else {
c[k] = b[j];
j++;
}
k++;
}
while(i<n)
{
c[k] = a[i];
i++;
k++;
}
while(j<m)
{
c[k] = a[j];
j++;
k++;
}
Dovrebbe essere "b", non "a"

Grazie mille, non avevo minimamente pensato ad una svista cosė clamorosa :)