|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
Algoritmo di ordinamento per selezione
Salve a tutti. Sono nuovo di queste parti. Frequento l'università e sono negato per l'informatica. Quindi mi chiedevo se potete darmi una mano nel risolvere i miei dubbi su algoritmi che per voi saranno sicuramente stupidaggini.
Devo sviluppare un algoritmo per l'ordinamento di un array tramite il metodo di selezione del massimo. Questo è quello che ho sviluppato. Per scrivere l'algoritmo su foglio, uso il Pascal Like (o almeno questo mi pare sia il nome del linguaggio che ci è stato dato per fare queste stesure su foglio), e per metterlo sul PC uso il Fortran90. Vi lascio l'algoritmo in Pascal Like: mi dite se è giusto? Grazie Codice:
begin ord_sel var : A[10] : array of real var : t,max : real var : i,j,m,n,p : integer read n for i=1 to n do read A[i] endfor for i=1 to n-1 do m:=n-i+1 p:=1 max:=A[1] for j=2 to m if (A[j]>max) then p:=j max:=A[j] endif endfor t:=A[m] A[m]:=A[p] A[p]:=t endfor for i=1 to n do print A[i] endfor end ord_sel Ultima modifica di gd020188 : 22-11-2008 alle 12:35. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prima cosa indenta il codice che hai scritto ed inserisci all'interno del tag CODE del forum.
Altrimenti diventa arduo capirci qualcosa |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Per dire se un algoritmo e' giusto, si puo' inziare a provare con qualche test, poi possiamo leggere l'algoritmo e si cercano eventuali casi particolari non coperti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
Ho messo il codice nel tag CODE.
Io ho provato a ordinare l'array 5-3-1-4-2 e l'array 6-1-4-2-5-3 e mi pare funzionare. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Va bene metterlo nel tag code, ma se non indenti il codice non serve a niente
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
|
|
|
|
|
|
#8 | |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 530
|
Codice:
const int nmax=100; // numero max di elementi
typedef int Vettore [nmax]; // dichiarazione del tipo Vettore
// Funzione per la ricerca del minimo in un sottoelenco
void MinimoSottoelenco(const Vettore SubV, const int k, const int n, int & min, int & p)
{
min=SubV[k];
p=k;
for(int i=k+1;i<n;i++) {
if (min > SubV[i]) {
min=SubV[i];
p=i;
}
}
}
// Funzione di ordinamento per selezione
void SelectionSort(Vettore & Elenco, const int n)
{
int p;
int min;
for(int k=0;k<n-1;k++) {
MinimoSottoelenco(Elenco,k,n,min,p);
Elenco[p]=Elenco[k];
Elenco[k]=min;
}
}
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Codice:
begin ord_sel var : A[10] : array of real var : t,max : real var : i,j,m,n,p : integer read n for i=1 to n do read A[i] endfor for i=1 to n-1 do m:=n-i+1 p:=1 max:=A[1] for j=2 to m if (A[j]>max) then p:=j max:=A[j] endif endfor t:=A[m] A[m]:=A[p] A[p]:=t endfor for i=1 to n do print A[i] endfor end ord_sel
__________________
|
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
Grazie a tutti. La prossima volta indenterò il codice personalmente: mi scuso per la mia mancanza.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:38.




















