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 condicionDespues 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 condicionDespues 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 condicionDespues 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 HacerComo ven es un algoritmo muy simple pero bastante eficaz y facil de comprender.
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
No hay comentarios:
Publicar un comentario