Busqueda local

Loading

viernes, 11 de marzo de 2011

Sort

Dentro de mis estudios me han apasionado varios tópicos, algunos ya los he comentado en este Blog, pero hay uno que no he nombrado siquiera, sin embargo cuando me los presentaron resultaron ser un reto muy interesante.
El concepto parece sencillo, tanto que de forma ingenua podríamos intentar escribir un algoritmo innovador, algo que nadie haya descubierto, sin que tengamos las bases, de lo que ya existe.
Me refiero a los métodos de ordenamiento, hay muchos algoritmos que se han creado o han tenido popularidad en cierto momento, sin embargo, es bien cierto que no todos sirven para lo mismo. Así que no basta con saber implementar uno, hay que conocer los otros para estar preparado antes los retos de programación que debemos resolver.
 

Entre los más famosos están:

  • Inserción.
  • Burbuja
  • Mezcla
  • Quick
Por nombrar algunos, aun que no pretendo hacer un tratado de estos en esta publicación, solo redactar estos párrafos a manera de introducción, si les interesa hay mucho material en Wikipedia  al respecto, a mi me interesa como ordenar datos en .NET, así que manos a la obra.
 

Ordenar con .NET:

Si tenemos que ordenar datos, usando .NET no tenemos que preocuparnos por esa teoría, al menos yo no me preocupo.
El Net Framework ya nos preparo el terreno, los arreglos y otras colecciones ya vienen con el método SORT, sin embargo cuando usamos clases que nosotros desarrollamos, no siempre consideramos la posibilidad de que sean ordenados y por consiguiente no funciona el SORT.
 

Requerimientos:

Supongamos que tenemos un arreglo de objetos, que se agregan a la lista y que deberían ser ordenados por alguna de sus propiedades. Es un requerimiento muy simple.
 

Solución.

Como en la gran mayoría de las publicaciones que he hecho en este blog, la solución parte de algo que sea común a todos, y esto es una interface. El .NET verifica si nuestras clases tiene implementada la interface IComparable. De otro modo tendríamos que usar las sobre cargas del SORT con un objeto que implemento IComparer, de la cual no hablare en este post.
 

Ejemplo:

Supongamos que tenemos nuestra clase:
sort1
Y queremos que la propiedad Texto sirva para realizar el proceso de ordenación. En este caso debemos implementar la Interface IComparable y escribir el código que se requiere para el método de comparación, con lo que nuestra clase quedaría así:
sort2
Para simplificar el código incluí una región donde oculte las propiedades que vemos en el primer ejemplo.
Por último supongamos que creamos un método que debe regresar un IEnumerable de los objetos que tenemos almacenados en el arreglo, pero que antes debe ordenarlos:
sort3
Como podrán ver en este punto y después de haber implementado la interface adecuada, solo debemos llamar al método SORT del arreglo, .NET se encargara de verificar si la implementa y ejecutara el proceso de ordenamiento basado en la propiedad indicada.
El resultado será un IEnumerable ordenado alfabéticamente por la propiedad Texto.
El poder del código solo es completo, si tenemos el conocimiento de como usarlo

No hay comentarios:

Publicar un comentario