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

Fusione: un array

Precedente
SUPERIORE
Successiva

Supponiamo che l'array v contenga due sottoarray adiacenti ordinati (v' da inf a medio e v'' da medio+1 a sup).

Si puņ adattare l'algoritmo di fusione su tre array in modo che i dati siano copiati, in ordine, su un array temporaneo e poi ricopiati su v, da inf a sup

static void merge2(double[] v, int inf, int medio, int sup)
{
   int i1=inf,
       i2=medio+1,
       i3=0;

   double[] v3 = new double[sup-inf+1];

   while(i1 <= medio && i2 <= sup)
      if(v[i1] <= v[i2])
      {
         v3[i3]=v[i1];
         i1++;
         i3++;
      }
      else
      {
         v3[i3]=v[i2];
         i2++;
         i3++;
      }
   while(i1 <= medio)
   {
      v3[i3]=v[i1];
      i1++;
      i3++;
   }
   while(i2 <= sup)
   {
      v3[i3]=v[i2];
      i2++;
      i3++;
   }
   for(int i=inf; i <= sup; i++)
      v[i]=v3[i-inf];
}

Fusione: un array - ApPuNtIdIuNiNfOrMaTiCo

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

Precedente
SUPERIORE
Successiva