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) v(3) v(4) v(5) v(6) Confrontiamo il primo elemento con il secondo e poiché è maggiore si effettua lo scambio: Confrontiamo il primo (che è diventato 5) con il terzo (9) e poiché è minore niente scambio ; poi sempre il primo con il quarto (3) e poiché è maggiore si effettua lo scambio
poi il primo con il quinto (4) e nessuno scambio e con il sesto (nessuno scambio):
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; poi con il quarto (5) e si ha lo scambio; quindi il secondo è diventato 5
che va confrontato con il quinto (4) e quindi si effettua lo scambio (il secondo è ora 4) e ancora confronto il secondo con il sesto (6) e niente scambio:
Ora si parte dal terzo elemento (9) e lo si confronta con i successivi: Partiamo dal quarto (9) che scambiamo con il quinto (7) e ora il quarto viene confrontato col sesto e viene scambiato: scambio con il quarto (7), poi scambio 7 con il quinto (5) e poi confronto con il sesto (6) e non c’è scambio:
Infine partiamo dal quinto (9) che scambiamo col sesto: Il vettore risulta quindi ordinato in ordine crescente.
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. Ciclo Dopo aver effettuato la selezione per il primo elemento siamo passati al secondo poi al terzo ecc.. Sino al penultimo. Ciclo Per I da C+1 a n SE v(C)>v(I) ALLORA scambia v(I) con v(C) Fine SE Incrementa I Per C da 1 a n-1 Incrementa C n=dimensione del vettore
NOMEDESCRIZIONETIPOUTILIZZO Vett(1 to N)Vettore in cui viene effettuato l’ordinamento vettore di interi(Input) ContContatore per il primo ciclo, cerca il più piccolo per ogni posizione interolavoro IContatore per il secondo ciclo, che serve per effettuare gli scambi interolavoro TempVariabile che serve per effettuare lo scambio interolavoro tabella delle variabili
inizio For C = 1 to N -1 Vett(C) > Vett(I) Temp = Vett(C) V F Vett(C) = Vett(I) Vett(I) = Temp Fine For I = C +1 to N
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 Codice V.B.