Hola chicos, en esta ocasion quiero ayudarles a comprender mejor el funcionamiento de este metodo. Quiero aclarar que esto es un complemento y de ninguna manera es la mejor forma de aprenderlo, pero si tienen un ramo de Estructura de Datos esto les servira.
Este metodo funciona de la siguiente manera. Se toma el menor elemento del arreglo y se compara con n - 1 y n - 2 y asi sucesivamente.
Ejemplo
Supongamos que tenemos un arreglo de 5 elementos en la que a es el arreglo.
{i, menor, k, j son variables de tipo entero}
a = {2, 8, 3, 1, 9}
PRIMERA PASADA
Se realiza la siguiente asignacion: menor <- a[1](2)
(a[2] < menor) (8 < 2) No se cumple la condicion
(a[3] < menor) (3 < 2) No se cumple la condicion
(a[4] < menor) (1 < 2) Se cumple la condicion
menor <- a[4](1)
(a[5] < menor) (9 < 1) No se cumple la condicion
Despues de esta pasada el arreglo queda asi:
a = {1, 8, 3, 2, 9}
SEGUNDA PASADA
Se realiza la siguiente asignacion: menor <- a[2](8)
(a[3] < menor) (3 < 8) Se cumple la condicion
menor <- a[3](3)
(a[4] < menor) (2 < 3) Se cumple la condicion
menor <- a[4](2)
(a[5] < menor) (9 < 2) No se cumple la condicion
Despues de esta pasada el arreglo queda asi:
a = {1, 2, 8, 3, 9}
TERCERA PASADA
Se realiza la siguiente asignacion: menor <- a[3](8)
(a[4] < menor) (3 < 8) Se cumple la condicion
menor <- a[4](3)
(a[5] < menor) (9 < 3) No se cumple la condicion
Despues de esta pasada el arreglo queda asi:
a = {1, 2, 3, 8, 9}
Como ven hicieron falta solo 3 pasadas para ordenar un arreglo de 5 elementos, esto claramente puede variar pero siempre sera mas efectivo que el metodo de ordenacion por insercion u ordenacion por intercambio directo(burbuja), en los que explicare en otra oportunidad. Siempre es bueno conocer los otros metodos independiente de su efectiva ya que de esta forma comprendemos mejor lo que se esta haciendo.
Algoritmo
Para i<-1 Hasta n-1 Hacer
menor <- a[i];
k <- i;
Para j<-i+1 Hasta n Hacer
Si a[j] < menor Entonces
menor <- a[j];
k <- j;
FinSi
FinPara
a[k] <- a[i];
a[i] <- menor;
FinPara
Como ven es un algoritmo muy simple pero bastante eficaz y facil de comprender.