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
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
In che senso?Originariamente inviato da NomeClasse
senza utilizzare algoritmi particolari, ricorsivi o altro.
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
Dipende se vuoi/devi sviluppare l'algoritmo tu (=esercizio "didattico") o se ti basta usare qualcosa di già fatto.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?
Il modo più semplice e immediato:
(Arrays è java.util.Arrays).codice:int[] num = { 10, 5, 7, 2, 18, 6 }; Arrays.sort(num);
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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
Per la lettura dell'array dovrai semplicemente chiedere all'utente il numero di elementi dell'array, quindi procedere con l'introduzione dei dati.Originariamente inviato da LeleFT
Algoritmi di ordinamento ce ne sono tanti. Alcuni tra i più famosi:
1) BubbleSort
2) MergeSort
3) QuickSort
4) CountingSort
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
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.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??
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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
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:
Però fai attenzione: stai ordinando delle stringhe e non dei numeri.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; } } } } }
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
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.Originariamente inviato da NomeClasse
per ora ho sviluppato questo:
Funziona; è possibile svolgere l' esercizio anche in altri modi?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Hai ragione andbin,
devo corregge il tiro...
In effetti con Array di numeri tipo 45,28,3,5 funziona...
Grazie