Ordinamento
Introduzione
• Una delle operazioni che si possono
eseguire sui vettori, è quella di ordinare gli
elementi del vettore in ordine crescente
(dal più piccolo al più grande o dalla A alla
Z) o in ordine decrescente (dal più grande
al più piccolo o dalla Z alla A).
• Esistono molte tecniche per l’ordinamento
di un vettore (sort).
Ordinamento per Selezione
• Questo metodo si basa sul modo
normalmente utilizzato per ordinare un
insieme di elementi selezionando
successivamente l’elemento più piccolo.
• Si cerca l’elemento più piccolo e lo si pone
in prima posizione, poi si cerca
nuovamente il più piccolo tra gli elementi
che rimangono e così via.
Si devono ordinare i seguenti elementi
v(1)
v(2)
7
5
v(3)
9
v(4)
v(5)
v(6)
3
4
6
Confrontiamo il primo elemento con il secondo e poiché è maggiore si effettua lo scambio:
5
9
7
3
4
6
Confrontiamo il primo (che è diventato 5) con il terzo (9) e poiché è minore niente scambio;
5
7
9
3
4
6
poi sempre il primo con il quarto (3) e poiché è maggiore si effettua lo scambio
5
7
9
3
4
6
7
9
4
3
6
5
poi il primo con il quinto (4) e nessuno scambio
3
7
9
5
4
6
e con il sesto (nessuno scambio):
3
7
9
5
4
6
3
7
9
5
4
6
A questo punto viene reiterato il ciclo partendo dal secondo elemento (7):
confrontiamo il secondo con il terzo (9) e poiché è più piccolo niente scambio;
3
7
9
5
4
6
4
6
poi con il quarto (5) e si ha lo scambio;
3
7
9
3
5
9
5
4
6
4
6
7
quindi il secondo è diventato 5
3
5
9
7
che va confrontato con il quinto (4) e quindi si effettua lo scambio (il secondo è ora 4)
3
5
9
3
7
9
4
7
6
4
3
4
6
5
9
7
5
6
e ancora confronto il secondo con il sesto (6) e niente scambio:
3
4
9
7
5
6
Ora si parte dal terzo elemento (9) e lo si confronta con i successivi:
scambio con il quarto (7),
3
4
7
9
5
6
poi scambio 7 con il quinto (5)
3
4
5
9
7
6
e poi confronto con il sesto (6) e non c’è scambio:
3
4
5
9
7
6
9
6
Partiamo dal quarto (9) che scambiamo con il quinto (7)
3
4
5
7
e ora il quarto viene confrontato col sesto e viene scambiato:
3
4
5
6
9
7
3
4
5
6
9
7
Infine partiamo dal quinto (9) che scambiamo col sesto:
3
4
5
6
7
Il vettore risulta quindi ordinato in ordine crescente.
9
Ciclo
Cosa abbiamo fatto?
Si è confrontato il primo elemento con il secondo, con il terzo e con i rimanenti
elementi, se l’elemento era maggiore abbiamo effettuato lo scambio, se minore
è rimasto inalterato.
n=dimensione
del vettore
Per C da 1 a n-1
Per I da C+1 a n
SE v(C)>v(I) ALLORA
scambia v(I) con v(C)
Fine SE
Incrementa I
Ciclo
Incrementa C
Dopo aver effettuato la selezione per il primo elemento siamo passati al secondo
poi al terzo ecc.. Sino al penultimo.
tabella delle variabili
NOME
DESCRIZIONE
TIPO
UTILIZZO
Vett(1 to N) Vettore in cui viene
effettuato
l’ordinamento
vettore di interi
(Input)
Cont
Contatore per il
primo ciclo, cerca il
più piccolo per ogni
posizione
intero
lavoro
I
Contatore per il
secondo ciclo, che
serve per effettuare
gli scambi
intero
lavoro
Temp
Variabile che serve
per effettuare lo
scambio
intero
lavoro
inizio
For C = 1 to N -1
For I = C +1 to N
F
Vett(C) > Vett(I)
V
Temp = Vett(C)
Vett(C) = Vett(I)
Vett(I) = Temp
Fine
Codice V.B.
Const N = 10
Dim Vett( 1 to N) As Integer
Private Sub CMDOrdina_Click()
Dim C As Integer
Dim I as Integer
Dim Temp As Integer
For C = 1 To N-1
For I = C + 1 To N
If Vett(C) > Vett(I) Then
Temp = Vett(C)
Vett(C) = Vett(I)
Vett(I) = Temp
End If
Next I
Next C
End Sub
Scarica

Ordinamento