Originariamente inviato da peruzzo
A me interessa creare una classe con un metodo capace di ordinare gli elementi di un vettore contenente numeri di qualsiasi tipo (double, long, float) che sia il più performante possibile sempre e comunque. In pratica vorrei inserire una condizione if che scelga il sistema migliore a seconda delle casistiche. Ovviamente vorrei usare anche i thread, non solo i generic.

Non esiste un algoritmo migliore in ogni caso, e ovviamente non puoi usare "degli if" perché i tipi possibili sono infiniti, al massimo puoi gestire diversamente i tipi numerici oppure scrivere un particolare algoritmo di ordinamento che sfrutti le peculiarità di uno specifico tipo di dato.

Originariamente inviato da peruzzo
Quando i valori sono random il metodo usato da java è il migliore?
Quando i valori sono random usate quello di java oppure usate un altro algoritmo?
Arrays.sort() quanti thread usa?

Dalla pagina qui sotto:

http://www.simplesoft.it/algoritmi-al-confronto.html

il sistema Merge Sort sembra essere molto buono per il random... vince sempre lui!
Se l'hanno scelto, evidentemente è risultato fra i migliori.

No, non mi risulta che i metodi Arrays.sort siano multi-threading (e comunque il guadagno dipende dagli algoritmi, può anche non esserci o non essere possibile...). Se non hai particolari esigenze usa quegli algoritmi di sorting e via.

Originariamente inviato da Alex'87
http://it.wikipedia.org/wiki/Algori..._di_ordinamento

Come vedi ci sono più di tre algoritmi di ordinamento...

Il metodo "standard" di Java è Arrays.sort() e usa un merge sort modificato http://docs.oracle.com/javase/6/doc...til/Arrays.html
A seconda del tipo di dato usano anche un quicksort.

Originariamente inviato da peruzzo
Ma c'è la possibilità di vedere il metodo "Merge sort modificato" implementato da java per capire come funziona?



sto leggendo qui ma ci sono delle cose che non capisco:

http://www.simplesoft.it/merge-sort.html

tipo:

codice:
for(; j >= min; j--) {
manca il punto da cui partire...

e poi non capisco cosa siano min e max...
La dichiarazione non è obbligatoria nel for, così come non lo sono le altre due parti.

Se non ci capisci niente, forse dovresti cominciare con algoritmi più semplici.

Riguardo il sorgente, ancora una volta: usa Google, lo trovi in 3 secondi.