Vous êtes sur la page 1sur 6

Conferencia: Algoritmos de ordenamiento

INTRODUCCIN
Recordar los elementos de Complejidad Algortmica estudiados en la clase
anterior.
DESARROLLO
Por qu al buscar en un diccionario lo hacemos rpidamente? Y en la gua
telefnica?
En ambos casos la respuesta es la misma: porque estn ordenadas
alfabticamente.
En muchos procesos informativos la bsqueda de determinada informacin es
vital. Esta bsqueda es mucho ms efectiva si dicha informacin estuviese
ordenada. Es por ello que los algoritmos de ordenamiento son tan importantes
como los algoritmos de bsqueda.
Objetivos
Que los estudiantes:
- se familiaricen con el concepto de ordenamiento.
- Conozcan y comprendan la esencia de los algoritmos de la burbuja,
insercin y seleccin.
Ordenacin
Ordenacin es el proceso por el cual un conjunto de datos similares es
colocado en orden creciente (decreciente). Es decir si tenemos los
elementos a1 , a2, a3, ... , an, se tiene entonces que a1 < a2 < a3 < ... < an .
El ordenamiento puede ocurrir en la memoria interna de la computadora, se
llama entonces ordenamiento interno. Tambin puede ocurrir en unidades de
memoria externa, se llama entonces ordenamiento externo.
Estudiaremos solamente mtodos de ordenacin interna.
Llave de ordenacin: se le llama as al campo que sirve como base para hacer
las comparaciones y poder ordenar. Si los elementos que se desean ordenar
son simples (enteros, reales, etc.), ellos mismos constituyen la llave de
ordenamiento, pero si se quiere ordenar personas de las cuales se tienen como
datos: Nombre, Edad, Sexo debemos saber cual de esos campos utilizaremos
para ordenar, incluso no tiene que ser un nico campo, pudiramos ordenar
por edad y sexo.
Presentacin de los resultados de la ordenacin

Por contigidad fsica:


Se utiliza la misma estructura para ordenar.
Si es un arreglo se intercambian los elementos de manera que estn
ordenados.
As si tenemos la siguiente tabla:

20

12

28

05

10

18

15

despus del ordenamiento tendremos:

05

10

12

15

18

20

28

Principales mtodos de ordenacin:


Se dividen en tres grandes grupos:
permutacin
seleccin
insercin.
En cada categora se estudian mtodos simples (sencillos de entender y
programar) y mtodos ms complejos.
Estudiaremos un mtodo simple de cada clase y luego un mtodo ms
complejo de la clase de permutacin.

Mtodo de la Burbuja (Bubblesort )


Este es uno de los mtodos ms conocidos de ordenamiento. No se trata de un
algoritmo eficiente, es estudiado slo como un ejemplo sencillo de cmo se
puede ordenar. Cae en la categora de los mtodos de permutacin.
Su principio consiste en permutar valores de posiciones consecutivas,
logrando que los valores ms grandes vayan al final del arreglo (por eso se
llama burbuja)
Se pasa una vez por el arreglo y se lleva el valor mayor al final. Habra que
empezar de nuevo para lograr que vaya el mayor de los restantes a su
posicin.

Vamos a ordenar un arreglo en orden creciente de valores. Por ejemplo:

El primer paso es hacer la comparacin entre los dos elementos de las primeras
posiciones:

En este caso, los dos primeros elementos estn desordenados entre si, luego debemos
intercambiarlos de posicin. De igual forma, continuamos con las comparaciones de
los elementos siguientes:

Verificamos que los elementos estn desordenados entre si. Debemos intercambiarlos
y continuar las comparaciones hasta el final del arreglo:

Despus de este primer recorrido por el arreglo, haciendo las comparaciones e


intercambios necesarios, verificamos que el mayor elemento: el nmero 5, se
encuentra en la ltima posicin del arreglo. Podemos decir que el nmero 5
burbuje para la posicin correcta: la ltima del arreglo.

El prximo paso ser repetir el proceso de comparaciones e intercambios desde el


inicio del arreglo. Solo que esta vez el proceso no necesitar comparar el penltimo
con el ltimo elemento, pues el ltimo nmero, el 5, ya est en su posicin correcta en
el arreglo.

Nuevamente, se comparan los dos primeros elementos del arreglo. En este caso,
verificamos que ser necesario el intercambio de posicin entre los elementos.
A continuacin realizamos las comparaciones hasta el final (recordando que la ltima
posicin ya est ordenada):

Observamos que el segundo elemento de mayor valor, el 4, "burbuje" para su


posicin correcta. Ahora precisamos repetir el proceso nuevamente; pero esta vez, no
necesitamos tomar en consideracin los dos ltimos elementos del arreglo.

Una vez ms, el elemento de mayor valor, el nmero 3, "burbuje" para su posicin
correcta. Basta ahora un nuevo ciclo para que todo el arreglo quede ordenado.
Observacin: En este caso, debido a las disposiciones iniciales de nuestro arreglo, el
arreglo ya est ordenado, pero no es posible saberlo a travs del algoritmo. Por eso,
precisaremos realizar el proceso una vez ms.

Ahora, ya se tiene el arreglo ordenado.

Veamos otro ejemplo:


ndices

Arreglo

20

12

28

10

18

15

1era. I

12

20

10

18

15

28

2da I.

12

10

18

15

20

28

3era I.

10

12

15

18

20

28

4ta I.

10

12

15

18

20

28

5ta I

10

12

15

18

20

28

6ta I

10

12

15

18

20

28

Zona ordenada
Zona desordenada

Observar que al final de la tercera iteracin ya el arreglo est ordenado,


pero el algoritmo no se detiene hasta terminar todas las posiciones.
Una versin en Java para ordenar arreglos de elementos de tipo enteros
pudiera ser:
public static void bubbleSort(int[] arr) {
int temp;
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

Este algoritmo tiene complejidad O(n2), independientemente del tipo


de datos que se ordena.
Mejoramiento del mtodo bubble
Este algoritmo admite fcilmente un poco de mejoramiento, el ejemplo
anterior (en la tabla) muestra que al menos tres iteraciones (a partir de
la 4ta Iteracin) no afectan al orden de los elementos, pues stos ya
estn ordenados. Una tcnica obvia que permite perfeccionar este
algoritmo consiste en recordar si durante un pase ha tenido lugar algn
intercambio, es perfectible recordar no slo el hecho de si hubo un
intercambio sino adems la posicin (ndice) del ltimo intercambio,
de manera que se concluya el proceso cuando no se hagan
intercambios.
Se deja propuesto a los estudiantes la implementacin de esta
mejora al mtodo bubble.

BIBLIOGRAFIA

Data Structures & Algorithms in Java.


Robert Lafore
Captulo 3.
Estructura de Datos en Java.
Luis Joyanes Aguilar
Ignacio Zahonero Martnez
Captulo 6, epgrafes 6.3 al 6.5.
Apuntes del profesor en la plataforma virtual.

Vous aimerez peut-être aussi