Esempio di ordinamento di un array

venerdì 1 giugno 2007 di Francesco Pagano


using System;
using System.Collections.Generic;
using System.Text;

namespace Prog2
{
   class Persona
   {
       private string nome;

       public string Nome
       {
           get { return nome; }
           set { nome = value; }
       }
       private int annoNascita;

       public int AnnoNascita
       {
           get { return annoNascita; }
           set { annoNascita = value; }
       }
       public Persona(string nome, int anno)
       {
           this.Nome = nome;
           this.AnnoNascita = anno;
       }
       static public bool operator >=(Persona par1, Persona par2)
       {
           return par1.AnnoNascita >= par2.AnnoNascita;
       }
       static public bool operator <=(Persona par1, Persona par2)
       {
           return par1.AnnoNascita <= par2.AnnoNascita;
       }
       static public int ConfrontaNome(Persona par1, Persona par2)
       {
           return par1.Nome.CompareTo(par2.Nome);
       }
       static public int ConfrontaAnno(Persona par1, Persona par2)
       {
           return par1.AnnoNascita - par2.AnnoNascita;
       }
   }

   public class Vettore
   {
       private Persona[] dati = new Persona[3];
       public void Sort()
       {
           Persona temp = null;
           int j = dati.Length;
           while (j > 0)
           {
               for (int i = 0; i < j - 1; i++)
               {
                   if (dati[i] >= dati[i + 1])   //scambiare il '>' con '<' per ottenere un ordinamento decrescente
                   {
                       temp = dati[i];
                       dati[i] = dati[i + 1];
                       dati[i + 1] = temp;
                   };
               };
               j--;
           };
       }
       private delegate int ConfrontaDelegate(Persona o1, Persona o2);
       private void SortDel(ConfrontaDelegate cd)
       {
           Persona temp = null;
           int j = dati.Length;
           while (j > 0)
           {
               for (int i = 0; i < j - 1; i++)
               {
                   if (cd(dati[i], dati[i + 1]) > 0)
                   {
                       temp = dati[i];
                       dati[i] = dati[i + 1];
                       dati[i + 1] = temp;
                   };
               };
               j--;
           };
       }
       private void Stampa(string titolo)
       {
           Console.WriteLine("*** " + titolo + " ***");
           //            for(int k=0; k<dati.Length; k++)
           foreach (Persona k in dati)
           {
               Console.WriteLine("nome: " + k.Nome + "\tanno di nascita: " + k.AnnoNascita);
           }

       }
       public static void Main2()
       {
           Console.WriteLine("*** inizio *** ");
           Vettore vet = new Vettore();
           vet.dati[0] = new Persona("giorgio", 1991);
           vet.dati[1] = new Persona("antonio", 1994);
           vet.dati[2] = new Persona("carlo", 1990);
           vet.Stampa("prima");
           vet.Sort();
           vet.Stampa("dopo sort");
           vet.SortDel(new ConfrontaDelegate(Persona.ConfrontaNome));
           vet.Stampa("dopo sort con ConfrontaNome");
           vet.SortDel(new ConfrontaDelegate(Persona.ConfrontaAnno));
           vet.Stampa("dopo sort con ConfrontaAnno");
           Console.WriteLine("*** fine ***");
       }
   }
}


Effettua la registrazione a PayPal e inizia ad accettare pagamenti tramite carta di credito immediatamente.
P&P Informatics - P.I. e C.F. 01651210831
tel: Milano 02-40055302 Roma 06-60507807 Messina 090-8966103
email: info@pep.it