PDA

Visualizza la versione completa : Algoritmo Bouble Sort (Java)


silverfran278
04-12-2003, 13:22
Mi servirebbe un piccolo aiuto nell'implementare l'algoritmo bouble Sort. Questo mi serve per ordinare alcuni oggetti di tipo String in un Vector.

Io ho scritto questo codice, ma non mi da il risultato desiderato.
--------------------------------------------------------------------
CODICE :

private Vector riordina(Vector vettore){
boolean scambio = true;

int indice = 0;
int lunghezza = vettore.size();

String corrente, prossimo;

while(lunghezza != 0 && scambio) {
scambio = false;
indice = 0;

while(indice != lunghezza - 1) {
corrente = (String) vettore.elementAt(indice);
prossimo = (String) vettore.elementAt(indice + 1);

if(corrente.compareTo(prossimo) > 0) {
scambio = true;
vettore = scambia(vettore, indice, indice + 1);
}
indice++;
}
lunghezza--;
}

return vettore;

}
---------------------------- FINE CODICE -------------------------
Spero che qualcuno possa aiutarmi. Grazie lo stesso. :bhò:

LeleFT
04-12-2003, 14:29
A parte un piccolo errore, dove stà il tuo problema?

L'errore consiste nell'aver impostato lunghezza = vettore.size() e non (vettore.size()-1): questo ti porterà sicuramente ad un errore di ArrayIndexOutOfBoundsException per come hai scritto il codice.

L'algoritmo, a prima vista, mi sembra corretto.

Solo una cosa: il metodo lo hai erso privato perchè lo usi solo all'interno della classe da altri metodi?

Ciao.

Lucked
04-12-2003, 15:38
non riesco a capire perchè gli passi una classe, in genere le funzioni matematiche o di questo tipo, si dichiarano come static e gli si passa l'array da ordinare così:


public static String[] riordina(String array[]) { codice; }

:bubu: Luca

ChReAn
04-12-2003, 15:52
Originariamente inviato da Lucked
non riesco a capire perchè gli passi una classe, in genere le funzioni matematiche o di questo tipo, si dichiarano come static e gli si passa l'array da ordinare così:


public static String[] riordina(String array[]) { codice; }

:bubu: Luca

E perche' mai dovresti dichiararle statiche?

Lucked
05-12-2003, 01:08
Non lo so...ma mi piaceva di più cosi

LeleFT
05-12-2003, 16:36
E che differenza vedi fra un Vector ed un array? Se a lui serve ordinare un Vector (che non è nient'altro che un array con una serie di metodi che lo manipolano), alla funzione passerà un Vector...



Ciao.

Lucked
05-12-2003, 20:05
:bubu: Si infatti...però non so cosa lui volesse fare, e nel caso non volesse ordinare l'array di un vector, dicevo che era meglio(nel senso di più semplice) usare un metodo statico. :bubu:

Loading