Hola que tal oigan tengo una pregunta para ustedes tengo una lista de
objetos de tipo estudiante:
Pero quiero hacer una ordenacion de tipo MergeSort, el algoritmo ya por ahi
lo tengo en una clase llamada Sorting
pero no se como vincular este algoritmo con la lista de objetos.
Mas o menos lo que quisiera hacer seria lo siguiente: lista.mergeSort(); y
que me ordene por este metodo, pero no se como vincular la clase que tengo
(sorting) que contiene el metodo MergeSort a la lista de objetos.
de hecho intente probar con el metodo Sort que ya tiene el List, pero me
marco que no se pueden comparar matrices, entonces no se como hacerlo,
agradecere si alguien me puede dar alguna idea.
Anexo parte del codigo que tengo
List <estudiante > lista=new List<estudiante>() ;
estudiante edgar = new estudiante("Edgar", "87-7-03-70", 485,
"Sistemas Computacionales");
estudiante javier = new estudiante("Javier", "87-7-03-72", 955,
"Electronica");
estudiante Pedro = new estudiante("Pedro", "87-7-03-73", 554,
"Electromecanica");
estudiante Aaron = new estudiante("Aaron", "87-4-15-55", 9823,
"Informatica");
lista.Add(edgar);
lista.Add(javier);
lista.Add(Pedro);
lista.Add(Aaron);
//esta es la que me ordenaria
lista.mergeSort();
//clase estudiante
public class estudiante
{
public string name;
public string telefono;
public int matricula;
public string carrera;
public string Carrera
{
get { return carrera; }
set { carrera = value; }
}
public string Telefono
{
get { return telefono; }
set { telefono = value; }
}
public int Matricula
{
get { return matricula; }
set { matricula = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public estudiante(string Name, string Tel, int mat, string Career)
{
name = Name;
telefono = Tel;
matricula = mat ;
carrera = Career;
}
//clase sorting
public static class Sorting
{
public static int [] mergeSort(int[] a, int[] tmpArray, int left, int
right)
{
if (left<right){
int center=(left+right)/2;
mergeSort(a,tmpArray, left, center);
mergeSort(a, tmpArray, center+1, right);
merge(a, tmpArray, left, center+1, right);
}
return a;
}
public static void merge(int[] a, int[] tmpArray, int leftPos, int
rightPos, int rightEnd)
{
int leftEnd=rightPos-1;
int tmpPos=leftPos;
int numElements=rightEnd-leftPos+1;
while (leftPos<=leftEnd && rightPos<=rightEnd){
if (a[leftPos]<(a[rightPos]))
tmpArray[tmpPos++]=a[leftPos++];
else
tmpArray[tmpPos++]=a[rightPos++];
}
while(leftPos<=leftEnd)
tmpArray[tmpPos++]=a[leftPos++];
while(rightPos<=rightEnd)
tmpArray[tmpPos++]=a[rightPos++];
for (int i=0; i<numElements; i++, rightEnd--)
a[rightEnd]=tmpArray[rightEnd];
}
}
Leer las respuestas