Está en la página 1de 14

Introduccin al Mtodo del Ordenamiento por Seleccin

iBooks Author

C APTULO 1

Introduccin al Mtodo del Ordenamiento por Seleccin

iBooks Author

Introduccin

comparaciones llevadas a cabo, y el nmero de asignaciones. Respecto al consumo de memoria, son considerados ms eficientes aquellos algoritmos que utilicen estructuras de datos adecuadas con el fin de minimizar el espacio de almacenamiento utilizado. El mtodo del Ordenamiento por Seleccin (Selection sort) es, valga la redundancia, un algoritmo de ordenamiento que modifica la ubicacin de los componentes de un arreglo o lista para satisfacer algn criterio de ordenamiento preestablecido, siendo los ms comunes el orden numrico y lexicogrfico.

Cuando tenemos frente a nosotros varios algoritmos que cumplen una misma tarea se estudia la eficiencia de los mismos con el fin de determinar cual de ellos es el ptimo en base a la cantidad de memoria ocupada para el almacenamiento y el tiempo de ejecucin, no siendo relevante para este estudio el lenguaje utilizado ni las caractersticas de la computadora. Esta claro que hoy en da la velocidad de procesamiento de una computadora es tan elevado que muchos de los problemas que debe afrontar no implican para la misma un importante consumo de tiempo o espacio de almacenamiento. De igual forma, se siguen presentando situaciones en las que el volumen de la trata de datos es tan elevado que la optimizacin de un algoritmo o la seleccin del ptimo cobran importancia. A grandes rasgos, analizar la eficiencia de un algoritmo implica tener en cuenta la cantidad de variables utilizadas, las

Si bien este mtodo de ordenamiento no es conocido por ser el ms estable o con menor orden de complejidad, es fcil de comprender. Por este motivo es que el Ordenamiento por Seleccin se utiliza con mucha frecuencia en el mbito educativo para insertar a la persona en la confeccin y entendimiento de algoritmos.

iBooks Author

C APTULO 2

Ordenamiento por Seleccin

iBooks Author

Funcionamiento

El algoritmo recorre el arreglo a partir de la segunda posicin hasta el final con el fin de encontrar el elemento ms pequeo. Una vez encontrado, este elemento se copia a la primera posicin analizada en la pasada del algoritmo, siendo en este caso la segunda posicin del arreglo. El mtodo del Ordenamiento por Seleccin continua realizando la misma tarea en cada pasada hasta llegar al final del arreglo, omitiendo en cada vuelta la posicin ms chica de la ronda anterior (en la tercera vuelta se omite el anlisis de la segunda posicin, en la cuarta vuelta se omite el anlisis de la tercera posicin, y sucesivamente). Una vez finalizado el algoritmo y procesado todo el arreglo, el mismo se encontrar ordenado. En este caso concreto se plantea un ordenamiento ascendente, aunque es posible un ordenamiendo descendente si se modifica el cdigo para que en cada vuelta se busque el elemento ms grande en lugar del ms pequeo.

El mtodo del Ordenamiento por Seleccin recorre hasta el final el arreglo destinado para su ordenamiento con el fin de encontrar el elemento de valor ms bajo. Una vez que se lo ubica, el mismo se copia a la primera posicin del arreglo. El viejo contenido de la primera posicin del arreglo se debe copiar a la antigua posicin del elemento ms pequeo encontrado en el paso anterior. Para poder llevar a cabo esta tarea el algoritmo guarda en una variable auxiliar el contenido de la primera posicin del arreglo antes de copiar en dicho lugar el elemento ms pequeo encontrado. En otras palabras, se intercambia el valor de la primera posicin del arreglo con el valor de la ubicacin del elemento ms pequeo encontrado. Cuando se produce la segunda pasada del algoritmo se repite el proceso anterior pero esta vez sin tener en cuenta la primera posicin del arreglo.

iBooks Author

El algoritmo correspondiente al mtodo del Ordenamiento por Seleccin trabaja con dos for (para) anidados, donde el primero se ejecuta n-1 veces y el segundo n-1 veces para la primera pasada, siendo n la cantidad de componentes del arreglo destinado a su ordenamiento. Cuando se produce la segunda vuelta del algoritmo, el primer for (para) se ejecuta n-2 veces, al igual que el segundo. Siguiendo esta lgica, en la pasada nmero X ambos for (para) se ejecutarn n-X veces, lo cual queda resumido en la siguiente formula.
(n-1) + (n-2) + (n-3) + ... + n - (n-1)

queo encontrado se debe guardar en la segunda variable auxiliar, aux, el contenido de esta posicin para luego copiar este valor a la posicin inicial en la que se encontraba el elemento ms pequeo encontrado. Es posible resumir todo el intercambio de componente que lleva a cabo el algoritmo correspondiente al mtodo del Ordenamiento por Seleccin en tres pasos: 1. Se copia en la variable aux el contenido de la primera posicin del arreglo. 2. En la primera posicin del arreglo se copia el elemento ms chico encontrado. 3. En la posicin inicial del elemento ms chico encontrado sealada por la variable min se copia el contenido almacenado en la variable aux.

Aplicando la propiedad de suma de series aritmticas (la sumatoria de una serie es igual a la suma del primer elemento ms el ltimo multiplicado por la mitad de la cantidad de elementos de la serie) obtenemos que el orden de complejidad en el cual se encuentra este algoritmo es N^2.
((N-1)+1)*(N-1)/2=N*(N-1)/2=(N^2-N)*1/2 => O(N^2)

Para que el algoritmo del mtodo del Ordenamiento por Seleccin pueda cumplir su objetivo hace uso de dos variables auxiliares. La primera, min, se utiliza para guardar la ubicacin del elemento ms pequeo encontrado para luego realizar el intercambio de componente con la primera posicin del arreglo (en el caso de la primera pasada). Antes de sobreescribir la primera posicin del arreglo con el valor del elemento ms pe5

iBooks Author

C APTULO 3

Algoritmos

iBooks Author

Algoritmo en pseudocdigo

Algoritmo Seleccin Comienzo Constante n=5 Entero Arreglo[n], i, j, min, aux Para i desde 0 hasta n-2
min = i
Para j desde i+1 hasta n-1

Si (Arreglo[j] < Arreglo[min])


Entonces min = j

FinSi
FinPara
aux = Arreglo[i]
Arreglo[i] = Arreglo[min]
Arreglo[min] = Aux FinPara Fin
7

iBooks Author

Algoritmo en C



min = j;
} } aux = arreglo[i]; arreglo[i] = arreglo[min]; arreglo[min] = aux;

printf("\n"); printf("Este es su arreglo ordenado: "); #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <conio.h> #define n 5 main() { int arreglo[n], i, j, min, aux; for (i=0; i<=n-1; i++) {
printf("Ingrese elemento del arreglo: ");
scanf("%d", &arreglo[i]);
getchar(); } for (i=0; i<=n-2; i++) {
min = i;
for (j=i+1; j<=n-1; j++) {

if (arreglo[j] < arreglo[min]) {
8

for (i=0; i<=n-1; i++) {


printf("%d", arreglo[i]);
printf(" - "); } printf("\n"); system ("pause"); }

iBooks Author

C APTULO 4

Seguimientos

iBooks Author

Seguimiento para un arreglo ordenado en forma ascendente

se encontraba inicialmente puesto que se trata del segundo elemento ms pequeo del arreglo.

31
3.

36

53

78

95

Repitiendo las operaciones anteriores, el nmero 53 (el elemento ms pequeo del resto del arreglo) se vuelve a ubicar en la tercera posicin (arreglo[2]), siendo esta posicin el lugar donde ya se encuentra ubicado.

31
Tomando a modo de ejemplo el siguiente arreglo cuyas componentes se encuentran ordenadas de forma ascendente, se proceder a ordenar el mismo de forma ascendente utilizando el mtodo del Ordenamiento por Seleccin. 4.

36

53

78

95

El siguiente paso consiste en ubicar el nmero 78 en la misma posicin en la cual se encuentra (arreglo[3]).

31 31
1.

36

53

78

95

36

53

78

95
La cuarta pasada corresponde a la ltima de las vueltas del algoritmo sobre el arreglo, el cual en este punto ha sido procesado por completo y se encuentra ordenado de forma ascendente.

En la primera pasada del algoritmo, el nmero 31 (el ms pequeo encontrado en todas las componente que conforman el arreglo) se vuelve a copiar en la misma posicin en el que se encuentra (la primera posicin del arreglo).

31
2.

36

53

78

95

El nmero 36 es ubicado en la segunda posicin del arreglo (arreglo[1]), es decir en la misma posicin donde

10

iBooks Author

Seguimiento para un arreglo invertido respecto al orden deseado


3.

elemento ms pequeo de las restantes componente se encuentra en la penultima posicin (arreglo[3]). Se realiza el intercambio entre esta posicin y la segunda posicin del arreglo (arreglo[1]).

31

36

53

78

95

Tomando a modo de ejemplo el siguiente arreglo cuyas componentes se encuentran ordenadas de forma descendente, se proceder a ordenar el mismo de forma ascendente aplicando el mtodo del Ordenamiento por Seleccin. 4.

El algoritmo determina la posicin del tercer elemento ms pequeo del arreglo y lo intercambia con el ubicado en la tercera posicin. En este caso las posiciones coinciden y el nmero 53 se copia en la misma ubicacin que ocupa.

31

36

53

78

95

95
1.

78

53

36

31

Por ms que el algoritmo ya se encuentre ordenado, la ejecucin continua y el nmero 78 se copia en la misma posicin en la que se encuentra (arreglo[3]).

En la primera pasada del algoritmo se almacena la posicin del elemento ms pequeo encontrado (arreglo[4]) que contiene el nmero 31. A este valor se lo intercambia con el valor contenido en la primera posicin del arreglo.

31

36

53

78

95

31
2.

78

53

36

95

La cuarta pasada corresponde a la ltima de las vueltas del algoritmo sobre el arreglo, el cual en este punto ha sido procesado por completo y se encuentra ordenado de forma ascendente.

Se vuelve a recorrer la totalidad del arreglo, omitiendo en esta pasada la primera posicin, y se determina que el
11

iBooks Author

Seguimiento para un arreglo ordenado en forma aleatoria

trata del segundo elemento ms pequeo de todo el arreglo.

3
3.

14

16

26

98

90

125

429

Se repite lo ocurrido en el paso anterior, puesto que el 16 se debe copiar en la misma posicin en la cual se encuentra (arreglo[2]).

3
Tomando a modo de ejemplo el siguiente arreglo cuyas componentes se encuentran ordenadas de forma aleatoria, se proceder a ordenar el mismo de forma ascendente utilizando el mtodo del Ordenamiento por Seleccin. 4.

14

16

26

98

90

125

429

En la cuarta pasada del algoritmo, se detecta al nmero 26 como el ms pequeo de los valores de las componentes restantes, y el mismo se copia a la cuarta posicin (arreglo[3]), siendo esta la misma posicin en la que se encontraba originalmente.

26
1.

14

16

98

90

125

429 3 14 16 26 98 90 125 429

En la primera pasada del algoritmo, se analizan todas las componentes y se identifica el ubicado en la cuarta posicin (arreglo[3]) como el de valor ms pequeo. El mismo se intercambia con el valor de la primera componente.

5.

De las siguientes componentes, el algoritmo identifica al nmero 90 como el ms pequeo y lo intercambia con el valor de la componente ubicada en la quinta posicin (arreglo[4]).

3
2.

14

16

26

98

90

125

429
6.

14

16

26

90

98

125

429

El nmero 14 se copia en la misma posicin en la que se encuentra originalmente (arreglo[1]) puesto que se

El algoritmo vuelve a repetir el proceso para detectar al nmero 98 como el valor ms pequeo de las restantes
12

iBooks Author

componentes, y copiarlo en la misma posicin en la que se ubica originalmente (arreglo[5]).

3
7.

14

16

26

90

98

125

429

Si bien el arreglo ya se encuentra completamente ordenado, el algoritmo vuelve a pasar por el arreglo y copia la penltima componente el valor 125 en la septima posicin (arreglo[6]), la misma ubicacin que originalmente tena este nmero.

14

16

26

98

90

125

429

La septima pasada corresponde a la ltima de las vueltas del algoritmo sobre el arreglo, el cual en este punto ha sido procesado por completo y se encuentra ordenado de forma ascendente.

13

iBooks Author

También podría gustarte