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