asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 11247
ASPCode.it - Store

  > > Articoli

Odinare un Array

Data di pubblicazione: 07/01/2003        Voto della community: 4,00 (Votanti: 1)

In molte nostre applicazioni ci puó capitare di dover ordinare un array di numeri o di stringhe; il problema puó sembrare semplice ma, nel caso in cui il numero di elementi da ordinare sia elevato, non va trascurata la complessità dell'algoritmo utilizzato.
Se si tratta di ordinare array di poche decine di elementi, l'operazione con gli attuali processori puó richiedere pochi millisecondi, ma nel caso aumentino gli ordini di grandezza il tempo necessario potrebbe aumentare esponenzialmente (aspettare una ventina di anni per odinare una lista di nomi non può essere naturalmente una soluzione ad un problema).

L'algoritmo che osserveremo adesso è uno dei piú semplici utilizzati ed è da usare con array di non pił 30 elementi o con array giá parzialmente ordinati. Per esempio se abbiamo un array con i nomi degli utenti connessi al nostro sito possiamo utilizzare l'Insertion Sort (è il nome di questo algortimo) ogni volta che viene aggiunto un nuovo utente.

<%@ LANGUAGE = VBscript %>
<%
'Insertion Sort
sub ordina(byref A)
  n=ubound(A)
  for j=1 to n
    x=A(j)
    i=j-1
    go=1
    while (i>=0)and(go=1)
      if (A(i)>x) then
        A(i+1)=A(i)
        i=i-1
      else
        go=0
      end if
    wend
    A(i+1)=x
  next
end sub

'Il nostro array iniziale
a=array(2,3,5,1,9,4,7,6,8)

'stampiamo a video l'array
Response.Write("Array iniziale:<br>")
for i=0 to ubound(a)
  Response.Write(a(i)&" ")
next

'Ordiniamo l'array
call ordina(a)

'stampiamo a video l'array ordinato
Response.Write("<br>Array ordinato:<br>")
for i=0 to ubound(a)
  Response.Write(a(i)&" ")
next
%>

Praticamente scorriamo l'array dal secondo all'ultimo elemento ed ogni volta lo inseriamo nella posizione corretta nella sequenza precendente di elementi.
Vediamo ora la versione in Jscript:

<%@ LANGUAGE = JScript %>
<%
function ordina(A){
  n=A.length;
  for (j=1;j<=n;j++){
    x=A[j];
    i=j-1;
    while ((i>=0)&&(A[i]>x)){
      A[i+1]=A[i];
      i=i-1;
    }
    A[i+1]=x;
  }
  A.length=A.length-1;
}

var a=new Array(2,3,5,1,9,4,7,6,8);

Response.Write("Array iniziale:<br>");
for (i=0;i<a.length;i++)
{
  Response.Write(a[i]+" ");
}

ordina(a);

Response.Write("<br>Array ordinato:<br>");
for (i=0;i<a.length;i++)
{
  Response.Write(a[i]+" ");
}
%>




Utenti connessi: 11247