domingo, 13 de enero de 2013

Ordenar una lista de números


Este programilla es el clásico de ordenación de una lista de números. Emplea el método o "algoritmo" de selección, que quizás no es el más efectivo, pero sí el más fácil de comprender. Consiste en buscar el mínimo de toda la lista y una vez encontrado ponerlo el primero. Se repite la búsqueda a partir del segundo término hasta el final. Una vez encontrado se coloca el segundo, etc. El número de "pasadas" es igual al número de números a ordenar, que yo llamo "N", menos 1, porque la última pasada consistiría en comparar un número consigo mismo, el último, al cual ya no le queda otro remedio que ser el último. Es decir, sería redundante y además no se cumpliría nunca la condición de ser mayor. La variable que cuenta las pasadas es "k". "i" es el índice de las variables a[0], a[1], etc. de la lista de números; "i" es el que marca el orden. El meollo del programa está en las líneas 16 a la 24.
Puede parecer un poco difícil de entender, pero no lo es si se reflexiona un poco sobre él. Dice sencillamente que haga N-1 pasadas comparando un número con todos los siguientes, pasadas cada vez más cortas, del 0 al último, del 1 al último, del 2 al último,... y que si encuentra un número más pequeño que él lo intercambie. El intercambio es clásico y consiste en "aparcar" el número mayor, copiar el menor sobre el mayor y asignar al mayor el valor aparcado. Yo no hubiera llegado nunca a este código directamente. No soy tan inteligente. Llegué por pasos sucesivos observando regularidades y ampliando los límites de los ensayos; se comienza con tres números, con cuatro,.. Es decir en estas cosas se entra "de puntillas". Lo bueno del programa es que es capaz de ordenar cualquier cantidad de números. Basta definir T al principio, o si lo hacemos por teclado, darle el número de números que queremos ordenar.
Queda pendiente el hacer lo mismo con cadenas, por ejemplo, una lista de nombres. Por ahí empecé yo, pero tuve que retirarme por el momento. Fue solo una retirada "táctica". No hay que cejar.
Por supuesto, todo esto está en los libros. Pero puedo puedo asegurar que lo mío ha sido todo "mecánica nacional".

No hay comentarios:

Publicar un comentario en la entrada