Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Ordinare numeri

  1. #1

    Ordinare numeri

    Buongiorno a tutti,

    ho la necessita' di ordinare un Array di numeri dal + piccolo al + grande , senza utilizzare algoritmi particolari, ricorsivi o altro.
    E' possibile sviluppare qualcosa del genere?
    Avete qualcosa in mente?

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Re: Ordinare numeri

    Originariamente inviato da NomeClasse
    senza utilizzare algoritmi particolari, ricorsivi o altro.
    In che senso?
    Algoritmi di ordinamento ce ne sono tanti. Alcuni tra i più famosi:

    1) BubbleSort
    2) MergeSort
    3) QuickSort
    4) CountingSort

    Ma cosa vuol dire "senza utilizzare algoritmi particolari, ricorsivi o altro"?
    Cerca di spiegare meglio quel che vuoi fare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ordinare numeri

    Originariamente inviato da NomeClasse
    ho la necessita' di ordinare un Array di numeri dal + piccolo al + grande , senza utilizzare algoritmi particolari, ricorsivi o altro.
    E' possibile sviluppare qualcosa del genere?
    Avete qualcosa in mente?
    Dipende se vuoi/devi sviluppare l'algoritmo tu (=esercizio "didattico") o se ti basta usare qualcosa di già fatto.

    Il modo più semplice e immediato:

    codice:
    int[] num = { 10, 5, 7, 2, 18, 6 };
    Arrays.sort(num);
    (Arrays è java.util.Arrays).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Ciao andbin,

    in realta' devo svolgere un esercizio didattico su come ordinare un Array, senza scrivere/scopiazzare parti di codice ancora non studiato.

    Pensavo di sviluppare il codice in questo modo:
    - Creazione Array;
    - Lettura Array, per verificare che i dati siano di tipo Sting o Int;
    - Ordinamento Array
    - Ouput a Video (System.out.println("blaaaaa" + ordinamento!!)

    Certo, Array.sort è il piu' semplice!
    Hai qualcosa in mente??

    Grazie

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Re: Re: Ordinare numeri

    Originariamente inviato da LeleFT
    Algoritmi di ordinamento ce ne sono tanti. Alcuni tra i più famosi:

    1) BubbleSort
    2) MergeSort
    3) QuickSort
    4) CountingSort
    Per la lettura dell'array dovrai semplicemente chiedere all'utente il numero di elementi dell'array, quindi procedere con l'introduzione dei dati.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da NomeClasse
    in realta' devo svolgere un esercizio didattico su come ordinare un Array, senza scrivere/scopiazzare parti di codice ancora non studiato.

    - Ordinamento Array

    Hai qualcosa in mente??
    Ma non capisco il dubbio ... se devi implementare tu con del tuo codice un algoritmo di ordinamento, allora devi prima scegliere quale algoritmo implementare. In letteratura ne esistono molti ... BubbleSort, QuickSort, ecc... come ha anche detto LeleFT. Tutti ben definiti e documentati.

    Generalmente uno non è che si "inventa" un algoritmo di ordinamento così su 2 piedi ... a meno di essere talmente bravo/esperto da aver trovato quel "qualcosa" in più che manca a quelli già esistenti ....

    Si sceglie un algoritmo e lo si implementa. E la implementazione si può fare in modi diversi con lo stesso linguaggio e ovviamente può cambiare un po' da linguaggio a linguaggio a seconda dei costrutti offerti dal linguaggio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ciao endbin,

    per ora ho sviluppato questo:
    codice:
    import java.util.*;
    
    public class  Ord
    {
    	public static void main(String[] args)
    	{
    				
    		System.out.println("\n");
    		System.out.print("I numeri sono: ");
    		
    		for (int i=0; i<args.length; i++ )
    		{
    			System.out.print("  " + args[i]);   
    		}
    		
    		System.out.println("\n");
    		System.out.print("In ordine crescente : ");
    		Arrays.sort(args); 
    		
    		for(int i = 0;i <args.length;i++)
    		{
    		  System.out.print("  " + args[i]);
    		}
    	 }
    }

    Funziona; è possibile svolgere l' esercizio anche in altri modi?
    Grazie

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Ricordato che quando posti il codice, lo devi inserire all'interno dei tag [code] e [/code] in modo da mantenerne l'indentazione e la formattazione.

    Ho corretto il tuo post precedente.

    L'esercizio poteva essere risolto anche in altri modi, ad esempio implementando autonomamente uno degli algoritmi di ordinamento.

    Il più facile di tutti è il BubbloSort.

    Ecco, quindi, una possibile altra soluzione:
    codice:
    public class  Ord
    {
       public static void main(String[] args)
       {		
          System.out.println("\n");
          System.out.print("I numeri sono: ");
    
          for (int i=0; i<args.length; i++ )
          {
             System.out.print("  " + args[i]);   
          }
    
          System.out.println("\n");
          System.out.print("In ordine crescente : ");
          ordina(args); 
    
          for(int i = 0;i <args.length;i++)
          {
             System.out.print("  " + args[i]);
          }
       }
    
       private static void ordina(String[] array) {
          String tmp = null;
          for(int i=0; i<array.length; i++) {
             for(int j=i; j<array.length; j++) {
                if(array[j].compareTo(array[i]) < 0) {
                   // L'elemento j è minore dell'elemento i: li scambio
                   tmp = array[i];
                   array[i] = array[j];
                   array[j] = tmp;
                }
             }
          }
       }
    }
    Però fai attenzione: stai ordinando delle stringhe e non dei numeri.
    Se lo richiami passandogli dei numeri con più di una cifra, l'algoritmo "sembra" sbagliare... ma è perchè l'ordinamento viene fatto lessicograficamente e non numericamente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da NomeClasse
    per ora ho sviluppato questo:

    Funziona; è possibile svolgere l' esercizio anche in altri modi?
    Innanzitutto con quel codice non stai ordinando numeri ma bensì stringhe!!! (quindi, come conseguenza, ad esempio "100" verrebbe prima di "20" !). Non è quello l'approccio giusto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Hai ragione andbin,

    devo corregge il tiro...
    In effetti con Array di numeri tipo 45,28,3,5 funziona...

    Grazie

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.