Newsgroup: it.comp.java
Titolo: ordinare un array nel minor tempo...

Ciao a tutti , in j2me ho un array String arr[]= new String [730] riempito 
inizialmente di 720 valori, cerco di ordinarlo con la seguente:
public void ordarr(){    //funzione di ordinamento di un array
int id=0;
               while (arr[id+1]!=null){
                   int comp= arr[id].compareTo(arr[id+1]);
                     if (comp<0)   id++;       //   se l'arr[id] viene prima 
dell arr[id+1]'
                       if (comp>0){              // se invece viene dopo 
scambia posto con la seguente scambia
                                       String mant=null;
                                       mant=arr[id];
                                       arr[id]=arr[id+1];
                                       arr[id+1]=mant;   id=0;
                                       }
              }
}
L'array arr[] viene inizializzato come già accennato con 720 valori ordinati 
in ordine alfabetico quindi si dovrebbe ordinare solo i valori inseriti in 
coda.
Però ci mette quasi un minuto per terminare l'ordinamento... Conoscete un 
metodo per fare prima? 

 metodo per fare prima?
Ti posso consigliare di guardarti gli algoritmi di ordinamento tipo
MergeSort, BubbleSort, QuickSort. Cosi su due piedi non ricordo quale
di questi nel caso pessimo (ovvero di elementi gia quasi ordinati, come
i tuoi) ci mette di piu`...devi controllare. In ogni caso ci sono
tantissimo algoritmi di ordiamento di Stringhe. Se cerchi un po in giro
(senza nessun riferimento a Java, solo per l'idea generica) ne trovi
molti.

 metodo per fare prima?
Ciao,
visto che hai quasi tutto l'array già riempito forse ti conviene usare un
algoritmo di ordinamento come l'InsertionSort. Ordina in tempo quadratico,
ma è anche vero che devi applicarlo solo su 10 elementi.
void insertions(String[] a, int from, String elem) {
	while((from > 0) && (a[from - 1].compareTo(elem) > 0)) {
		a[from] = a[from - 1];
		from--;
	}
	a[from] = elem;
}
Se non ti è chiaro e se è sbagliato (non l'ho provato) cerca su Google,
ci sono un sacco di esempi. Non ho guardato bene la tua soluzione ma mi
pare di capire che ogni volta che scambi l'elemento riparti dall'inizio
dell'array con i confronti. 
Ciao,
Andrea.

Non esiste Arrays.sort in J2ME?

 Non esiste Arrays.sort in J2ME?
Non ne ho idea, ma se esistono metodi di ordinamento
già nelle librerie standard ovviamente conviene usarli ;)
Ciao,
Andrea.

No per j2me non posso usare Arrays.sort; vi ringrazio tutti per l'aiuto solo 
che non ho capito BubleSort MergeSort che cos'è... Mi potreste spiegare? Ho 
fatto cmq diverse ricerche in internet ma non sono riuscito a prendere 
spunto da niente. Perchè sono un principiante e programmo in Java da meno di 
un mese... 

Sono diversi tipi di algoritmo di ordinamento. Buble è il più
semplice, Quick il più veloce.
Se vai su 
wikipedia.it
 trovi la descrizione ed anche le classi Java

da quel poco che ricordo prova ad usare un algoritmo che non ordina in
base ai confronti.tipo il counting-sort, che batte il limite inferiore
degli algoritmi di ordinamento basati su confronti(ovvero batte n lg
n).l'unica cosa e che il counting-sort fa ipotesi sull'input,ovvero
suppone che gli elementi siano interi, e compresi in un piccolo
intervallo.beh per il fatto di interi basta che gli dai una chiave di
interi, per l'intervallo non so non ho mai provato con cosi tanti
elementi, e non ricordo come doveva essere questo intervallo.Ma poi
devi ordinare solo gli ultimi 10 elementi indipendentemente da quelli
prima o insieme a quelli prima che fra di loro son gia' ordinati?
bye
zinco