Ciao a tutti!
Il noto algoritmo bubblesort può anche essere usato per ordinare in ordine alfabetico delle stringhe.
IL seguente file che ho scritto funziona perfettamente:
codice:
public class parole {
public static void main (String[]args){
String [] num = new String [3];
num[0]= "c";
num[1]= "a";
num[2]= "b";
System.out.println("Si parte da: " + num[0]+" "+num[1]+" "+num[2]+" ");
int n = num.length;
int i=0;
int j = 0;
String tmp = "";
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(num[j].compareTo(num[j+1]) > 0 ){
tmp = num[j];
num[j] = num[j+1];
num[j+1]=tmp;
}
}
}
System.out.println(num[0]+" "+num[1]+" "+num[2]+" ");
}
}
Questo per gli array.
Per i vettori dobbiamo usare la classe ArrayList,ed è qui che ho dei problemi.
Non riesco a capire perchè l'algoritmo,nonostante sia corretto non funzioni:
codice:
//Metodo che stampa tutte le info di tutti gli elementi della lista (vincolo:in ordine alfabetico)
public void informazioni(){
int i = 0;
int j = 0;
for (i = 0;i < contatti.size()-1;i++){
for (j=0;j<contatti.size()-i-1;j++){
Persona contatto = contatti.get(i);
if ( contatti.get(j).getNome().compareTo(contatti.get(j+1).getNome()) > 0 ){
contatto = contatti.get(j);
contatti.set(j, contatti.get(j+1));
contatti.set(j+1, contatto);
}
}
}
}
Anche se è un po' fastidioso da leggere,la condizione verifica che il nome di un contatto sia "maggiore" (intendo per ordine alfabetico) al successivo.
Secondo me,il problema risiede nella variabile "contatto" che viene sovrascritta!
Se è cosi come ovviare a questo problema?
GRazie in anticipo