Trova il primo negativo da sinistra.
Trova il primo positivo da destra.
Scambiali.
Ricomincia.
Continua fino a che i due puntatori "si incontrano".
In Java e senza puntatori:
La condizione p1!=p2 e' la condizione di uscita dal ciclo, e va testata anche nei sottocicli. Appena p1==p2 bisogna interrompere.codice:public static void positiviNegativi(int v[],int dim){ int p1 = 0; // In Java non serve passare dim, ma l'ho fatto per chiarezza int p2 = dim-1; int app=0; while (p1!=p2) { while ( (v[p1]>=0) && (p1!=p2)) p1++; while ( (v[p2]<=0) && (p1!=p2)) p2--; app = v[p1]; v[p1] = v[p2]; v[p2] = app; } }

Rispondi quotando