PDA

Visualizza la versione completa : array di stringhe in ordine alfabetico


Grande Capo
26-05-2003, 16:10
conoscete qualche algoritmo per ordinare in ordine alfabetico array di stringhe???

Level
26-05-2003, 16:37
In quale linguaggio ?
Comunque ad esempio in C o C++ basta utilizzare un qualsiasi algoritmo di ordinamento numerico e il confronto tra due stringhe lo si fa con la funzione strcmp, tenendo conto delle differenze tra lettere minuscole e maiuscole.

Grande Capo
26-05-2003, 16:57
a me servirebbe per java!!
volevo sapere più che altro se c' era qualcosa di più diretto!

ZIko
26-05-2003, 19:10
Ti scrivo tutto il sorgente cosi se lo capisci meglio:


import java.io.*;

class IOarray2{
public static void main(String[] argomenti){
System.out.println("Metti:");
BufferedReader IN=new BufferedReader(new InputStreamReader(System.in));
String[] my=new String[100];
int i = -1;
do{
i++;
try{my[i]=IN.readLine();} catch(IOException e){}
} while(my[i].compareTo("end")!=0);
/*questo qua sotto è il fulcro del riordinamento!!!*/
for(int j = 0; j < i; j++){
for(int k = 0; k < (i-j-1); k++){
if(my[k].compareTo(my[k+1]) > 0){
String appoggio = my[k];
my[k] = my[k+1];
my[k+1] = appoggio;
}
}
}
/*E qui finisce*/
System.out.println("Risultato:\n\n");
for(int j=0; j<i; j++)
System.out.println("-"+my[j]);
}
}

Spero di esserti stato utile, per qualsiasi problemi io sono qua!!!

r0x
26-05-2003, 22:28
C`e` il metodo statico sort() della classe utility Arrays:



String[] array = { "Ciao", "Buongiorno", "Arrivederci", "Notte" };

Arrays.sort( array );


Altrimenti, per mantenere una struttura di dati costantemente ordinata, iterabile ordinatamente e con tempi di accesso rapidi usa un TreeSet (o TreeMap).

Tutto in java.util.

Grande Capo
29-05-2003, 10:01
Originariamente inviato da ZIko
Ti scrivo tutto il sorgente cosi se lo capisci meglio:


import java.io.*;

class IOarray2{
public static void main(String[] argomenti){
System.out.println("Metti:");
BufferedReader IN=new BufferedReader(new InputStreamReader(System.in));
String[] my=new String[100];
int i = -1;
do{
i++;
try{my[i]=IN.readLine();} catch(IOException e){}
} while(my[i].compareTo("end")!=0);
/*questo qua sotto è il fulcro del riordinamento!!!*/
for(int j = 0; j < i; j++){
for(int k = 0; k < (i-j-1); k++){
if(my[k].compareTo(my[k+1]) > 0){
String appoggio = my[k];
my[k] = my[k+1];
my[k+1] = appoggio;
}
}
}
/*E qui finisce*/
System.out.println("Risultato:\n\n");
for(int j=0; j<i; j++)
System.out.println("-"+my[j]);
}
}

Spero di esserti stato utile, per qualsiasi problemi io sono qua!!!


:eek: ECCELLENTE!!!!
era proprio quello che mi serviva!!!
mi mancava solo il metodo compareTo(), la strada che avevo preso era molto simile solo che trasformavo l' array di stringhe in un array bidimensionale di char e poi lo ordinavo per la prima lettera al primo giro e se trovava parole con lettere iniziali uguali .....

guarda è pure lungo da spiegare figurati il lavoro della JVM!!!
grazie!!
:ciauz:

r0x
29-05-2003, 13:31
Oddio, se ti affidi alle prestazioni e` meglio che usi l`API, ma se e` a scopo didattico anche il bubble sort di Ziko va piu` che bene (con qualche ritocchino per dare piu` flessibilita` al codice..). :)

ZIko
30-05-2003, 18:13
Sono veramente commosso :cry: :cry: :cry: è la prima volta che qualcuno mi fa i complimenti per come programmo :cry: :cry: :cry: se ti può interessare ho creato un altro programma con lo stesso procedimeto ma molto più complesso e capace di gestire dati personali, quali data nome congnome(hihihihi)
Ciao ciao...

r0x
30-05-2003, 21:27
Ziko, allora ti propongo un esercizio. Generalizza quegli algoritmi applicandoli ad un array di oggetti Comparable, in modo da poterli utilizzare per qualunque tipo di array. ;)

ZIko
31-05-2003, 16:52
emmmm Comparable???:dottò: :dottò: :dottò: :dottò:

Loading