Uno de los primeros problemas que surgieron en computación fue el de ordenar listas de elementos (números, letras, palabras en orden alfabético...) Ya en 1951, una de las programadores del ENIAC desarrolló un algoritmo de ordenación para uno de los primeros superordenadores.
La ordenación permite analizar listas de elementos de una forma más sencilla o agruparlos para su posterior proceso (imagina un diccionario). Para que exista una ordenación debe existir un orden preconcebido que dependerá del tipo de elemento que analicemos: los números suelen depender de la cantidad que representan, las letras dependen del alfabeto empleado, los colores dependen de la longitud de onda...
Si piensas en algún método sencillo de ordenación puedes llegar a encontrar los principales algoritmos empleados. Por ejemplo, en una ordenación de números ascendente, podríamos tomar el primer elemento y compararlo con el segundo. Si el primero es menor que el segundo dejamos este par como está. Si no, cambiaríamos el orden. A continuación, haríamos lo mismo con el segundo y así, hasta llegar al penúltimo. Pero de este modo no garantizamos que todos los elementos estén ordenados. Debemos repetir este proceso desde el segundo al último, y luego del tercero al último y así hasta el final. En realidad hasta el penúltimo. ¿Has seguido el proceso?
Pues este proceso se denomina "ordenamiento de burbuja" y es uno de los más sencillos pero también de los más ineficientes.
A continuación podéis ver el diagrama de flujo para un ordenamiento ascendente según este método. A partir de aquí realizaríamos el programa en el lenguaje elegido y lo depuraríamos para "afinarlo".
Una variante de este método sería empezar por el último elemento y ordenar de último a primero. Como supondrás no hay variaciones en este caso en cuanto a eficacia. Pero existe otra idea que consiste en tomar el primer elemento y compararlo con el siguiente. A continuación tomamos el tercer elemento (recuerda que el primer y el segundo elementos se han ordenado entre sí) y se compara con los elementos primero y segundo para ordenarse. Avanzamos por el cuarto, el quinto... hasta llegar al final y cada elemento se va ordenando con sus precedentes de forma que llegamos a una lista ordenada. Esta sería una "ordenación por inserción".
Este método tampoco es muy eficiente pero es uno de los más simples de implementar porque se parece mucho a la forma natural de ordenar de los seres humanos.
Existe una rama de la computación dedicada a la tarea de ordenar y encontrar la forma más eficiente de realiza esta tarea. Otros métodos, como el Quicksort, son más rápidos y requieren menos memoria de almacenamiento pero son más complejos. Este último es el considerado como más rápido, aunque esto depende de la naturaleza de las listas a ordenar. Se basa en crear sublistas que se ordenan a los lados de elementos pivote y empleando recursividad reducen el número de comparaciones y facilitan su implementación.
Ahora que sabes un poco más del mundo de los algoritmos de ordenación, te animo a que cojas tu ordenador y trates de crear un programa que ordene una lista de números aleatorios con veinte o más elementos, empleando estas técnicas. Te auguro horas de diversión sin límites. No olvides enviar tus comentarios.
No hay comentarios:
Publicar un comentario