Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465

    Metodo per ordinare un array

    Vorrei creare un metodo per ordinare un array di cui non conosco la composizione, ho letto su internet che ci sono 3 sistemi. Mi potete far vedere i 3 metodi? E' possibile creare un algoritmo di test che permette di capire quale impiegare a seconda dei casi?

    A presto

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Metodo per ordinare un array

    Originariamente inviato da peruzzo
    Vorrei creare un metodo per ordinare un array di cui non conosco la composizione, ho letto su internet che ci sono 3 sistemi. Mi potete far vedere i 3 metodi? E' possibile creare un algoritmo di test che permette di capire quale impiegare a seconda dei casi?

    A presto
    Di quali tre sistemi stai parlando?
    E poi la domanda posta così non è molto correlata a Java.

    La libreria Java ha metodi di ordinamento, se non hai particolari esigenze utilizza quelli. Se invece vuoi vedere le differenze fra i vari algoritmi (che son ben più di 3), devi implementarli tu e semplicemente misurare il tempo d'esecuzione.

  3. #3
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    Se mi riporti il metodo standard di java di cui parli mi faresti un favore ma vorrei comunque capire come funziona.

    Io conosco il sistema con i 2 cicli for, quando gli elementi sono messi completamente a caso, e quello con il do - while che funziona bene quando parte degli elementi del vettore sono già ordinati e poi c'è ne ancora un'altro che non so come funziona che si usa quando gli elementi del vettore sono ordianti all'incontrario. Non mi risultano che ce ne siano altri. Inoltre sei sicuro che non ci sia un sistema per capire a priori quale sistema convenga utilizzare (calcolo del determinante, ecc...).


  4. #4
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    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.


  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    http://it.wikipedia.org/wiki/Algorit...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/docs...il/Arrays.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    http://www.simplesoft.it/algoritmi-d...o-in-java.html

    Ti dà anche un idea con degli applet di esempio..

    Come diceva un mio conoscente...
    "Google è tuo amico"


    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    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!

  8. #8
    Semplicemente quando ho una linkedlist oppure un Vector uso i metodi che mi mette a disposizione java.
    Altrimenti se ho dei normalissimi array uso la classica bubble sort.
    Almeno io faccio così...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  9. #9
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    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...

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.