[Algoritmi] Ordinamento array multipli di 2
Inviato: 12/07/2019, 11:54
Buongiorno ragazzi, ho il seguente problema:
scrivere un algoritmo in loco che ordini un vettore di interi in modo da ottenere il seguente effetto: l'array ordinato deve contenere prima tutti i multipli di 2 e a seguire tutti quelli che non lo sono.
La mia idea è quella di utilizzare la funzione qsort per il confronto nel seguente modo:
che ne dite?
Grazie
scrivere un algoritmo in loco che ordini un vettore di interi in modo da ottenere il seguente effetto: l'array ordinato deve contenere prima tutti i multipli di 2 e a seguire tutti quelli che non lo sono.
La mia idea è quella di utilizzare la funzione qsort per il confronto nel seguente modo:
- Codice:
int confronta(const void *a, const void *b){
int val1, val2, mod1, mod2;
val1 = *((int*)a);
val2 = *((int*)b);
mod1 = (va1%2);
mod2 = (va2%2);
if ( (mod1== 0) && (mod2 == 0)) //sono entrambi multipli
return val1-val2;
else
if ( (mod1!= 0) && (mod2 != 0) ) //sono entrambi non multipli
return val1-val2;
else
if ( (mod1== 0) && (mod2!=0) ) //mod1 è multiplo di 2, mod2 non è multiplo di 2
return val1-val2;
else //mod2 è multiplo di 2, mod1 non è multiplo di 2
return val2-val1;
}
void qsort(void *a, n, sizeof(a[0]), confronta);
che ne dite?
Grazie