Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ordinamento di un array statico

Approfondiamo la struttura degli array in VBScript
Approfondiamo la struttura degli array in VBScript
Link copiato negli appunti

Per chi ha studiato informatica, questo è il primo algoritmo complesso che viene insegnato. Vediamo come risolvere questo problema con VBScript. Per prima cosa dichiariamo un array statico e riempiamolo di valori:

<script language="vbscript">
 dim numeri(10)

 numeri(0)=5
 numeri(1)=54
 numeri(2)=22
 numeri(3)=43
 numeri(4)=232
 numeri(5)=51
 numeri(6)=11
 numeri(7)=3
 numeri(8)=53
 numeri(9)=54
</script>

Attenzione: in VBScript non è necessario dichiarare le variabili, ma è obbligatorio dichiarare un array prima di usarlo.

Con la prima riga: (Dim numeri(10)) abbiamo creato un array chiamato "numeri", formato da 10 elementi; i vari elementi dell'array sono identificati da 0 a 9 e nelle righe successive dell'esempio vengono inizializzati ad un valore numerico. Il tipo degli elementi di un array può anche essere "stringa, data o uno qualsiasi dei sottotipi del VBScript" (vedi capitolo 3 della guida a VBScript).

Passiamo ora ad ordinare i valori dell'array.

Per prima cosa scriviamo un algoritmo che ci restituisca la posizione nell'array del numero più piccolo: per fare ciò, basta prendere il primo elemento dell'array e confrontarlo con gli altri; quando se ne trova uno più piccolo, viene memorizzato l'indice di questo elemento e viene confrontato con i successivi.

<script language="vbscript">
 dim numeri(10)
 
 numeri(0)=5
 numeri(1)=54
 numeri(2)=22
 numeri(3)=43
 numeri(4)=232
 numeri(5)=51
 numeri(6)=11
 numeri(7)=3
 numeri(8)=53
 numeri(9)=54

 indice_del_numero_minore = 0

 for indice = 1 to 9
   if numeri(indice) < numeri(indice_del_numero_minore) then
     indice_del_numero_minore = indice
   end if
 next
 
 document.write "Il numero più piccolo è " & numeri(indice_del_numero_minore)
</script>

Il risultato sarà: il numero più piccolo è 3.

Ora effettuiamo un'operazione detta SWAP, cioè scambiamo il primo elemento dell'array con l'elemento contenente il numero più piccolo. Per farlo si ricorre ad una variabile temporanea:

<script language="vbscript">
dim numeri(10)

numeri(0)=5
numeri(1)=54
numeri(2)=22
numeri(3)=43
numeri(4)=232
numeri(5)=51
numeri(6)=11
numeri(7)=3
numeri(8)=53
numeri(9)=54

indice_del_numero_minore = 0

for indice = 1 to 9
  if numeri(indice) < numeri(indice_del_numero_minore) then
    indice_del_numero_minore = indice
  end if
next

document.write "Array prima dello SWAP:"

for indice=0 to 9
  document.write indice & " - " & numeri(indice) & "<br/>"
next

temp = numeri(indice_del_numero_minore)

numeri(indice_del_numero_minore) = numeri(0)

numeri(0) = temp

document.write "Array dopo lo SWAP:"

for indice = 0 to 9
  document.write indice & " - " & numeri(indice) & "<br/>"
next

</script>

Ecco il risultato:

Array prima dello SWAP:

0 - 5
1 - 54
2 - 22
3 - 43
4 - 232
5 - 51
6 - 11
7 - 3
8 - 53
9 - 54

Array dopo lo SWAP:

0 - 3
1 - 54
2 - 22
3 - 43
4 - 232
5 - 51
6 - 11
7 - 5
8 - 53
9 - 54

Ora il primo elemento dell'array è ordinato e non resta che ripetere l'algoritmo sui rimanenti 9 elementi; con questo procedimento verranno ordinati i primi 2 elementi dell'array e bisognerà poi ripetere l'algotitmo sui rimanenti 8. Ripetendo l'algoritmo fino all'ultimo elemento, si otterrà l'array ordinato.

<script language="vbscript">
dim numeri(10)
numeri(0)=5
numeri(1)=54
numeri(2)=22
numeri(3)=43
numeri(4)=232
numeri(5)=51
numeri(6)=11
numeri(7)=3
numeri(8)=53
numeri(9)=54

for i=0 to 8
 indice_del_numero_minore=i
 for indice=i+1 to 9
  if numeri(indice)<numeri(indice_del_numero_minore) then
   indice_del_numero_minore=indice
  end if
 next
 temp=numeri(indice_del_numero_minore)
 numeri(indice_del_numero_minore)=numeri(i)
 numeri(i)=temp
next

document.write "Array Ordinato:"

for indice=0 to 9
 document.write indice & " - " & numeri(indice) & "<br/>"
next
</script>

Risultato:

Array Ordinato:

0 - 3
1 - 5
2 - 11
3 - 22
4 - 43
5 - 51
6 - 53
7 - 54
8 - 54
9 - 232

Nei prossimi articoli vedremo altri algoritmi di ordinamento e come ordinare un array dinamico.


Ti consigliamo anche