Análisis y Diseño de Algoritmos
Prof: Ing. Victor Garro
Asistente: Marco Elizondo Vargas
ORDENAMIENTOS
Ordenamiento
Seleccion
Este algoritmo también es sencillo. Consiste en lo siguiente:
Tabla
de variables |
||
Nombre |
Tipo |
Uso |
lista |
Cualquiera |
Lista a ordenar |
TAM |
Constante entera |
Tamaño de la lista |
i |
Entero |
Contador |
pos_men |
Entero |
Posición del menor elemento de la lista |
temp |
El mismo que los elementos de la lista |
Para realizar los intercambios |
1. for (i=0; i<TAM - 1; i++)
2. pos_men = Menor(lista, TAM, i);
3. temp = lista[i];
4. lista[i] = lista [pos_men];
5. lista [pos_men] = temp;
Nota:
Vamos a ordenar la siguiente lista (la misma del ejemplo anterior :-)
):
4 - 3 - 5 - 2 - 1
Comenzamos buscando el elemento menor entre la primera y última posición. Es
el 1. Lo intercambiamos con el 4 y la lista queda así:
1 - 3 - 5 - 2 - 4
Ahora buscamos el menor elemento entre la segunda y la última posición. Es
el 2. Lo intercambiamos con el elemento en la segunda posición, es decir el 3.
La lista queda así:
1 - 2 - 5 - 3 - 4
Buscamos el menor elemento entre la tercera posición (sí, adivinaste :-D)
y la última. Es el 3, que intercambiamos con el 5:
1 - 2 - 3 - 5 - 4
El menor elemento entre la cuarta y quinta posición es el 4, que
intercambiamos con el 5:
1 - 2 - 3 - 4 - 5
Ventajas:
Desventajas:
Este es un algoritmo lento. No obstante, ya que sólo realiza un intercambio
en cada ejecución del ciclo externo, puede ser una buena opción para listas con
registros grandes y claves pequeñas. Si miras el programa de demostración
notarás que es el más rápido en la parte gráfica (por lo menos en un PC lento y
con una tarjeta gráfica mala como el mío x-|). La razón es que es mucho más
lento dibujar las barras que comparar sus largos (el desplazamiento es más
costoso que la comparación), por lo que en este caso especial puede vencer a
algoritmos como Quicksort.