Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Ordinamenti ingenui

Precedente
SUPERIORE
Successiva

Scambiare i valori contenuti nell'array v alle posizioni a e b

static void SCAMBIA(double[] v, int a, int b)
{
   double temp=v[a];
   v[a]=v[b];
   v[b]=temp;
}

Ordinare un array di due elementi

if(v[0] > v[1])
   SCAMBIA(v, 0, 1);

oppure...

if(v[0] > v[1])
{
   double temp=v[0];
   v[0]=v[1];
   v[1]=temp;
}

Ordinare un sottoarray di due elementi

if(v[i] > v[i+1])
   SCAMBIA(v, i, i+1);

Una passata

Una passata su tutte le N-1 coppie, all'interno di un array, provoca lo spostamento "in alto" della "bolla" più grande

for(int i=0; i < v.length-1; i++)
   if(v[i] > v[i+1])
      SCAMBIA(v, i, i+1);

Cioè l'elemento più grande si trova in ultima posizione alla fine della passata.

Bubble Sort

N passate, sulle N-1 coppie, ordinano sicuramente l'array

static void BUBBLESORT(double[] v)
{
   int n=v.length;
   for(int i=0; i < n; i++)
      for(int j=0; j < n-1; j++)
         if(v[j] > v[j+1])
            SCAMBIA(v, j, j+1);
}

In realtà sono necessarie al massimo N-1 passate su N-i coppie

static void BUBBLESORT(double[] v)
{
   int n=v.length;
   for(int i=0; i < n-1; i++)
      for(int j=0; j < n-i-1; j++)
         if(v[j] > v[j+1])
            SCAMBIA(v, j, j+1);
}

Selection Sort

Si può individuare il minimo e scambiarlo con il valore alla posizione 0: in questo modo l'elemento alla posizione 0 occuperà definitivamente il posto che gli spetta...

int posMin=0;
for(j=1; j < n; j++)
   if(v[j] < v[posMin])
      posMin=j;
SCAMBIA(v, 0, posMin);

Si ripete l'operazione con il sottovettore con indice da 1 a N-1, da 2 a N-1, ... e ogni elemento andrà al posto che gli spetta.

static void SELESORT(double[] v)
{
   int n=v.length;
   for(int i=0; i < n-1; i++)
   {
      int posMin=i;
      for(j=i+1; j < n; j++)
         if(v[j] < v[posMin])
            posMin=j;
      SCAMBIA(v, i, posMin);
   }
}

Ordinamenti ingenui - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva