Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccion Al Metodo Del Ordenamiento Por Seleccion
Introduccion Al Metodo Del Ordenamiento Por Seleccion
iBooks Author
C APTULO 1
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
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
iBooks Author
C APTULO 4
Seguimientos
iBooks Author
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
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
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
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
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