You are on page 1of 11

Instituto Tecnolgico Superior de Valladolid.

Estructura de Datos.

Unidad 5

Parte 1. METODOS DE ORDENAMIENTO. (BURBUJA & QUICKSORT)

Ingeniera en Sistemas Computacionales

Integrantes del equipo. Carlos Gerson ladrn de Guevara Camacho. Juan Jos Rodrguez Cetina. 3 B

Ordenacin por burbuja Este mtodo es clsico y muy sencillo, aunque por desgracia poco eficiente. La ordenacin por burbuja (<<buble sort) se basa en comparar elementos adyacentes de la lista (vector) e intercambiar sus valores si estn desordenados. De este modo se dice que los valores ms pequeos burbujean hacia la parte superior de la lista (hacia el primer elemento), mientras que los valores ms grandes se hunden hacia el fondo de la lista. Consideremos, como ya se ha expuesto, clasificaciones en orden creciente.

Anlisis Supongamos un vector A[!], A[2], .oo, A[n]. Se comienza el seguimiento del vector de izquierda a derecha, comparando A(1] con A[2]; si estn desordenados, se intercambian entre s. A continuacin se compara A[2] con A[3], intercambindolos si estn desordenados. Este proceso de comparaciones e intercambios contina a lo largo de toda la lista. Estas operaciones constituyen una pasada a travs de la lista. Al terminar esta pasada el elemento mayor est en la parte inferior de la lista y alguno de los elementos ms pequeos ha burbujeado hacia arriba de la lista. Se vuelve a explorar de nuevo la lista, comparando elementos consecutivos e intercambindolos cuando estn desordenados, pero esta vez el elemento mayor no se compara, ya que se encuentra en su posicin correcta. Se siguen las comparaciones hasta que toda la lista est ordenada, cosa que suceder cuando se hayan realizado (n - 1) pasadas. Para su mejor comprensin, veamos grficamente el proceso anterior con un vector (lista) de cinco elementos: A[ 1], A[2], A[3], A[ 4], A[5].

En la lista A, i ser el nmero de la pasada y j indica el orden del elemento de la lista. Se comenzar en el elemento j-simo y el (j + l)-simo.

Se han realizado cuatro comparaciones (5 - 1 o bien n - 1, en el caso de n elementos) y tres intercambios (rotulados por el smbolo tn.

Se observa que se necesitan cuatro pasadas para ordenar una lista de nmeros de cinco elementos, por lo que una lista de n elementos necesitar n-l pasada. El proceso se describe as: l. Realizar cuatro pasadas por la lista: i = 1,2,3,4. 2. Para la pasada 1 (i = 1) se realizan comparaciones (j = 1,2,3,4). A[l] con A[2], A[2] con A[3], etc. 3. Para la pasada 2 (i = 2) se realizan 3 comparaciones (j = 1,2,3). 4. Para la pasada 3 (i = 3) se realizan 2 comparaciones (j = 1,2). 5. Para la pasada 4 (i = 4) se realizan 1(5-4) comparaciones (j = 1):

El nmero de pasadas (4 o bien n - 1) se puede controlar con un bucle f or, y cada secuencia de comparaciones se puede controlar con un bucle for anidado al bucle de pasadas, en el que j vara desde 1 hasta 5 menos el valor especfico de i bucle externo i.

La operacin de intercambio se realiza con las instrucciones

Algoritmo de burbuja mejorado (refinamiento) La tcnica de ordenacin por burbuja compara elementos consecutivos de la lista, de modo que si en una pasada no ocurrieran intercambios, significara que la lista est ordenada. El algoritmo burbuja se puede mejorar si disponemos de algn tipo de indicador que registre si se han producido intercambios en la pasada. Cuando se explore la lista y el indicador no refleje intercambios, la lista estar ya ordenada y se terminarn las comparaciones.

Anlisis de la ordenacin por burbuja


Este algoritmo proporciona buen rendimiento en cuanto a su sencillez, pero por el contrario su eficiencia es pobre. Para una lista de n elementos, el proceso de ordenacin requiere n - 1 pasadas y el nmero de comparaciones se refleja en la tabla siguiente:

La funcin de eficiencia de rendimiento de un algoritmo se representa con la funcin O(n), tambin llamada Notacin de O-grande. En el caso de la burbuja, en el peor de los casos, el nmero de comparaciones es O(n2). El algoritmo de burbuja es una ordenacin cuadrtica, lo que significa elevado nmero de comparaciones y, por consiguiente, excesivo tiempo de ejecucin, o dicho de otro modo: es un algoritmo lento.

Ordenacin Rpida (QUICKSORT). Uno de los mtodos ms rpidos y ms frecuentemente utilizado en ordenacin de arrays es el conocido como ordenacin rpida (Quicksort). Fue inventado por C. H. Hoare, y la cantidad de cdigo necesario es sorprendentemente pequeo comparado con la excelente velocidad que proporciona.

La idea bsica de la ordenacin rpida de un array (lista) es: Elegir un elemento del array denominado pivote. Dividir o partir el array original en dos subarrays o mitades (sublistas), de modo que en una de ellas estn todos los elementos menores que el pivote y en la otra sablista todos los elementos mayores que el pivote. Las sublistas deben ser ordenadas, independientemente, del mismo modo, lo que conduce a un algoritmo recursivo. La eleccin del pivote es arbitraria, aunque por comodidad es usual utilizar el trmino central de la lista original, o bien el primero o ltimo elemento de la misma. Como ejemplo ilustrativo de la divisin de una lista en dos sublistas, consideremos la siguiente lnea de enteros: 9 23 31 17 21 19 13 15 26

Anlisis de la ordenacin rpida El mtodo de ordenacin rpida es el ms veloz de los conocidos. El nico inconveniente de este mtodo es la cantidad de memoria que se requiere en la pila. Caso de tener problemas de memoria, deber realizar pruebas para evitar errores en ejecucin. En este caso le recomendamos utilizar el mtodo de Shell. Si se supone que la lista se divide siempre en dos partes iguales, entonces, despus de la d-sima divisin de la lista, se tendrn 2d partes. El nmero de iteraciones del procedimiento particin (partir) es O(n) para todas las partes. Como haba log2n divisiones, el algoritmo requerir O(n * log2n).

Referencias.

Estructura de datos Luis Joyanes Aguilar. Estructura de datos - Osvaldo Cairo.

You might also like