Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - help me
Forum - Java - help me

Avatar
emix80 (Normal User)
Newbie


Messaggi: 1
Iscritto: 12/10/2008

Segnala al moderatore
Postato alle 9:45
Domenica, 12/10/2008
ciau a tutti
da poco sto programmando in java dopo aver capito sintassi e cose varie vorrei un aiuto.
vorrei sapere un algortmo che mi ordini in modo crescente dei numeri presi a caso
cioe se io ho tali numeri 49037 l'algortmo me li dovra mettere in ordine in questo modo 03479 inoltre tale algortmo dovra fare in modo che io possa mettere qualsiasi numero a caso e di conseguenza metterlo in ordine:k:
vi ringrazio da subito

PM Quote
Avatar
VaLeRiO (Ex-Member)
Pro


Messaggi: 114
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 11:52
Domenica, 12/10/2008
Hai due alternative:
1) Scriverti un tuo algoritmo
2) Ringraziare i programmatori Java che lo hanno gia fatto :P

Codice sorgente - presumibilmente Java

  1. // Crea un array di interi
  2. int array[] = new int[] { 435, 0, 2342 , 231, 53, 546 };
  3.  
  4. System.out.println("Array non ordinato: ");
  5. // Stampa il contenuto dell'array non ancora ordinato
  6. for(int number : array) System.out.print(number + " ");
  7. System.out.println(); // a capo
  8.  
  9. Arrays.sort(array); // Fai il sorting
  10.  
  11. System.out.println("Array ordinato: ");
  12. // Stampa il contenuto dell'array ordinato
  13. for(int number : array) System.out.print(number + " ");
  14. System.out.println(); // a capo



Ciao :P

ps. quel "strano" for è uguale a quello con 3 condizioni, solo che ne usi due e scorre automaticamente tutto l'array mettendo di elemento in elemento il valore nella variabile "number".

Se non ti fosse chiaro cerca su google ciclo for .. each.

Ultima modifica effettuata da VaLeRiO il 12/10/2008 alle 11:56
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 12:11
Domenica, 12/10/2008
come ha detto valerio, il modo per ordinare l'array sarebbe quello di utilizzare il metodo sort(), ma un algoritmo potrebbe essere questo:
Codice sorgente - presumibilmente Java

  1. void Ordina(int[] vals){
  2.  
  3.                 for(int i=0;i<vals.length;i++)
  4.                         for(int a=i+1;a<vals.length;a++)
  5.                                 if(vals[i]>vals[a])
  6.                                         scambia(vals,i,a);
  7.         }
  8.  
  9.         void scambia(int[] vals,int a, int b)
  10.         {
  11.                 int tmp = vals[b];
  12.                 vals[b]= vals[a];
  13.                 vals[a] = tmp;
  14.         }



una volta ottenuto l'array con i numeri casuali, chiami la funzione ordina ( passandoli come parametro l'array appena ottenuto). All'uscita della funzione l'array sarà ordinato in modo crescente.

Ultima modifica effettuata da Overflow il 12/10/2008 alle 12:14
PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 14:53
Domenica, 12/10/2008
ci sono tantissimi algoritmi per ordinare... alcuni più efficienti di altri. la funzione standard di java utilizza (giustamente) quicksort, che è il più veloce in assoluto. (O(n logn) operazioni, mentre l'algoritmo insertion sort qui sopra nel caso medio compie O(n^2) operazioni, (dove n è il numero di elementi da ordinare. quindi se ci sono 1000 elementi da ordinare le operazioni saranno circa 1.000.000, mentre usando quicksort (o mergesort o heapsort) sarebbero solo circa 9.965,784!! è chiara la differenza?

altrimenti si possono usare algoritmi di ordinamento lienari (tipo radix sort o counting sort) che ordinano un array in tempo lineare (O(n)) ma hanno dei vincoli implementativi.

cerca su wikipedia... sono centinaia!

PM Quote