-
Aiuto Informatica
Non sapevo dove postare ,cosi posto qui.
Un problemino semplice semplice per chi ci capisce di informatica.
Si tratta di un quesito abbastanza elementare credo ma, aimhè, fin'ora non solo non sono riuscito a trovare una risposta ragionandoci , non riesco a trovarla neanche sul mio libro , che non spiega affatto bene la cosa.
Nel cercare di scrivere programmini sempre piu complicati sto cercando di capire da solo molti meccanismi che il mio libro spiega malissimo facendo ricorso a moltissimi esempi difficili da generalizzare:
Fin'ora c'è una cosa che mi tornerebbe molto utile nel 90% dei programmi che devo implementare ma non riesco ancora a venirne a capo...
Come si riordina in ordine crescente o decrescente un array?
Ho molte idee a riguardo , ma non riesco a implementarlo.
Grazie in anticipo
ps: ho provato a pensarle tutte, ma il nocciolo della questione , credo, sia quello di non riuscire ad indicare l'x-esimo elemento dell'array, per poter poi riscrivere un'altro array i cui elementi soddisfano la seguente banalità :
array[x]<array[x+1]
-
con che metodo? in che linguaggio?
divide et impera?
-
-
-
Al di la del dividi e conquista , il mio proglema è scrivere l'algoritmo in codice sorgente. Il linguaggio è java.
Ho fatto diversi programmini fin'ora , alcuni anche abbastanza complessi , ma la maggior parte non riesto a portarla a termine se non trovo un modo per ordinare i dati di un array in ordine crescente o decrescente.
Un esempio pratico: programmino che prende in input 10 voti e stampa i 5 migliori. Utilizzando un'array , voi , come fareste?
-
Quote:
Originally Posted by
Axelfolie
Interessante , grazie
-
ce ne sono diversi di programmi "sort" , cerca su html.it
ci sono ottime guide li
-
usa un algoritmo di sort (il mejo è il merge sort, poi dipende se stai facendo programmazione o algoritmi, altrimenti semplicemente usa il metodo del buble sort) e fai stampare i primi 5...
-
Io conosco solo il bubble sort.
il dividi et impera non serviva per altre cose? Oo
-
public void bubbleSort(int[] x)
{
int temp = 0;
int j = x.length;
while(j>0)
{
for(int i=0; i<j-1; i++)
{
if(x[i]>x[i+1])
{
temp=x[i];
x[i]=x[i+1];
x[i+1]=temp;
};
};
j--;
};
}
Questo l'ho capito , ma ci sono alcune cose che dal basso della mia ignoranza informatica non capisco.
1. mettere i ; dopo le parentesi graffe?
2. in pseudocodice : Prendi il valore contenuto nella cella i, confrontalo con la cella i+1. Se il valore della cella successiva è superiore , inverti l'ordine. ( in pratica prevede un ordinamento decrescente) e fin qui non ci sono problemi , lo spiega anche il principio impirico. Ma, al posto di i+1 viene messa una variabile temp, intera e inizializzata a 0.
in pratica la variabile temp funziona come un terzo bicchiere , quando vogliamo invertire il liquido contenuto in 2 bicchieri?
3.Come lo stampo l'array ordinato ottenuto?
basta un semplice :
for ( int counter=1;counter<x.length;counterr++)
System.out.printf("%d\n",x[counter])
?
Perche il compilatore mi sta segnando un errore che propio non capisco.
-
In Java non saprei dirti, in php ci sono una nutrita serie di funzioni che servono proprio a ordinare le array nel modo che preferisci...
Questo è un esempio molto banale che mi viene in mente ora su 2 piedi...
Code:
$a = array ();
// funzione che ti popola l'array con indice [x] e valore [i]
.....
// ordina i valori dell'array in senso decrescente - non gli indici
// ma i valori, gli indici vengono riscritti!
rsort($a);
// Diciamo che vuoi i 5 risultati che escono per primi
// (ovvero saranno dal piu' grande al piu' piccolo)
while($x<5) { // <5 perché le array partono da 0, quindi 0..4 sono 5 elementi.
print($a[$x]);
$x++;
}
Oltre a rsort ce ne sono molte altre anche piu' raffinate, non penso che a java manchino ste funzionalità senza scomodare funzioni complesse.
-
Il codice per stampare l'array è corretto, ricordati il ";" dopo il s.o.p e occhio che nel for hai scritto counteRR++, con due R invece che una sola.
La seconda domanda non l'ho capita :O
-
si funge da "terzo bicchiere", variabile locale, temporale o che dir si voglia :)
-
Ho finito il programma , gira perfettamente.
Molto carino , so 4 facciate di quaderno di codice ed il mio primo programmino abbastanza complesso ( ci sono dentro 11 metodi :angel: )
Domattina penso di inserire il 12 esimo e siccome gia so che molto probabilmente non riusciro a farlo da solo tornero a rompervi le palle qui :)
Grazie a tutti , mi sete stati d'aiuto :thumbup:
-
QUADERNO?
ma dove la fai informatica? :sneer:
[Output: 14.44 Kb. compressed to 13.89 Kb. by saving 0.55 Kb. (3.81%)]