OoregonSuper FamosoIscritto danov, 2011Messaggi2191710 feb 2019, 20:43Sì, quello a bolle prevede un solo for e un while per controllare quando ripetere la for. Ma questo va bene lo stesso, certamente non con 3 indici.
/Anonimizzato25314Utente anonimizzato10 feb 2019, 23:24Cosi forse è più carino: for(k=0; k<DIM; k++){ for(i=0; (i+1)<DIM; i++) if(v[i]>v[i+1]){ sup=v[i]; v[i] = v[i+1]; v[i+1] = sup; } }
OoregonSuper FamosoIscritto danov, 2011Messaggi2191711 feb 2019, 13:58enricoscarsissimo ha scritto: E qual è la condizione di uscita dal while? Il fatto che non è avvenuto lo scambio
OoregonSuper FamosoIscritto danov, 2011Messaggi2191711 feb 2019, 13:59enricoscarsissimo ha scritto: Cosi forse è più carino: for(k=0; k<DIM; k++){ for(i=0; (i+1)<DIM; i++) if(v[i]>v[i+1]){ sup=v[i]; v[i] = v[i+1]; v[i+1] = sup; } } Sicuro?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191711 feb 2019, 14:40A parte il fatto che è più comodo scrivere i<DIM-1 il fatto è che la prima for non è necessaria (e farebbe perdere un bel po' di tempo). Al suo posto usa una while che ripeta la for SOLO se è stato effettuato almeno uno scambio.