Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan...

37
Unidad 3: Eficiencia de Algoritmos Tema V: Búsqueda. Búsqueda. Búsqueda Lineal. Búsqueda binaria. Búsqueda Máximos y Mínimos. Análisis de los algoritmos de búsqueda. Programación I (Plan 1999) Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE

Transcript of Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan...

Page 1: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Unidad 3: Eficiencia de Algoritmos

Tema V: Búsqueda.

Búsqueda. Búsqueda Lineal. Búsqueda binaria. Búsqueda Máximos y Mínimos. Análisis de los

algoritmos de búsqueda.Programación I (Plan 1999)

Algoritmos y Estructuras de Datos II (Plan 2009)

Mgter. Oscar Adolfo VallejosFaCENA - UNNE

Page 2: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda, Clasificación e Intercalación

Búsqueda

• La operación de búsqueda nos permite encontrar datos que están previamente almacenados. La operación puede ser un éxito, si se localiza el elemento buscado o un fracaso en otros casos.

• La búsqueda se puede realizar sobre un conjunto de datos ordenados, lo cual hace la tarea más fácil y consume menos tiempo; o se puede realizar sobre elementos desordenados, tarea más laboriosa y de mayor insumo de tiempo.

Page 3: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda

• Búsqueda Interna será aquella acción que se realice sobre datos que se encuentran en la memoria principal, por ejemplo en un arreglo.

• Búsqueda Externa es cuando todos sus elementos se encuentran en memoria secundaria (archivos almacenados en dispositivos de cinta, disco, etc.-)

• La operación de búsqueda de un elemento X en un conjunto consiste en determinar si el elemento X pertenece al conjunto y en este caso dar su posición, o bien, determinar que el elemento X no pertenece al conjunto.

Page 4: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

• Los métodos más usuales para la búsqueda son:

• Búsqueda secuencial o lineal

• Búsqueda binaria

• Búsqueda por transformación de claves

Page 5: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda Secuencial

• La búsqueda secuencial es la técnica más simple para buscar en una lista de datos. Este método consiste en recorrer una lista o arreglo en forma secuencial y comparar cada elemento del arreglo con el valor deseado, hasta que éste se encuentre o finalice el arreglo.

• Normalmente cuando la función de búsqueda termina con éxito, es decir encontró el dato buscado, interesa conocer en que posición fue encontrado el dato buscado. Esta idea se puede generalizar en todos los métodos de búsqueda.

• La búsqueda secuencial no requiere ningún requisito para el arreglo, y por lo tanto no necesita estar ordenado.

Page 6: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Inicio

V(i)

i=1, 100

I = 1

V(i) = X

No

"Encontrado" V(i)

"Posición " i

Si

I = I + 1

I = 100No

Si

"Dato No Encontrado"

Fin

Ingresar X

Inicio

Ingresar X

Leer V(100)

Desde I = 1 hasta 100 hacer

Si V(i) = X entonces

Imprimir “

Encontrado” V(i), “Posición” i

Fin

Fin Si

Fin desde

Imprimir “Dato no encontrado”

Fin

Page 7: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda SecuencialConsideraciones • El método es solo adecuado para listas cortas de datos. • A la hora de analizar la complejidad del método secuencial, tenemos

que tener en cuenta el caso mas favorable y el mas desfavorable. • Cuando el elemento no se encuentra tiene que realizar las n

comparaciones. Y en los casos en que el elemento buscado se localiza, este podrá estar en el primer lugar, en el último o en un lugar intermedio.

• Entonces, al buscar un elemento en un arreglo de N componentes se harán:

• N comparaciones si el elemento no se localiza• N comparaciones si el elemento está en la última posición• 1 comparación si está en el primer lugar• i comparaciones si está en un lugar intermedio (posición 1 < i < N)• Analizando lo escrito anteriormente podemos suponer que el

número medio de comparaciones a realizar es de (n + 1) / 2 , que es aproximadamente igual a la mitad de los elementos de la lista.

Page 8: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda Secuencial

• Una aplicación de la búsqueda puede ser en:• Vector: Se recorre el vector de izquierda a derecha hasta encontrar

una componente cuyo valor coincida con el buscado ó hasta que se acabe el vector. En este último caso el algoritmo debe indicar la no-existencia de dicho valor. Este método es válido para vectores ordenados o no, aunque para los vectores ordenados veremos otros métodos mas eficientes.

• Vector Ordenado: Cuando el vector de búsqueda esta ordenado se consigue un algoritmo mas eficiente, sin mas que modificar la condición de fin del caso anterior. La ventaja que se obtiene es que una vez sobrepasado el valor buscado, no es necesario recorrer el resto del vector para saber que el valor no existe.

• Matriz: Se realiza mediante el anidamiento de dos bucles de búsqueda HASTA cuya finalización vendrá dada por la aparición del valor buscado o la terminación de la matriz. El recorrido se podrá hacer indistintamente por fila o por columna.

Page 9: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda de máximos y mínimos

• En muchos casos, es necesario determinar el mayor o el menor valor de un conjunto de datos.

• Existen diversos algoritmos para esta determinación, en la mayoría de ellos se realizan comparaciones sucesivas de todos y cada uno de los datos resguardando en una variable auxiliar el valor que resulte mayor o menor, de acuerdo a lo que se busque, de manera tal que cuando no existan mas datos para comparar, esta variable auxiliar contendrá el valor máximo o mínimo buscado.

• Existen tres métodos para la resolución de este problema:– Ramificación del árbol– Campeonato– Supuesto o prepo

Page 10: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ramificación del árbol: Consiste en las combinaciones de comparaciones de todas las variables que intervienen. Este método se realiza teniendo en cuenta que todos los campos deben estar simultáneamente en memoria (es del tipo de búsqueda interna). Este método es al que tienden naturalmente todos los alumnos, en primera instancia, para la resolución del problema.

Page 11: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Inicio

LEER

A,B,C

EOF()

NO

A > B SI A > C SI"MAYOR A"

NO

B > C SI"MAYOR B"

NO

"MAYOR C"

NOB > C

NO

"MAYOR C"

SI"MAYOR B"

SI PARAR

A

A

Comenzar

Mientras no EOF

Leer A,B,C

Si A>B

Entonces

Si A>C

Entonces

Imprimir “Mayor “A

Si_no

Si B>C

Entonces

Imprimir

“Mayor “B

Si_no

Imprimir

“Mayor “C

Fin_si

Fin_si

Si_no

Si B>C

Entonces

Imprimir “Mayor “B

Si_no

Imprimir “Mayor “C

Fin_si

Fin_si

Fin_mientras

Parar

Page 12: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

• Campeonato: Consiste en la comparación de a pares de todas las variables que intervienen. En este método los campos también deben estar simultáneamente en memoria.

Inicio

LEER

A,B,C

EOF()

NO

A > B SI

SI PARAR

A

A

MY = A

C > MY SI

NO

NoMY = B

MY = C

"Mayor es" MY

Page 13: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

• Supuesto o Prepo: Es el que mas utilizaremos a lo largo del curso y consiste en suponer que una de las variables que existen en memoria, en el mismo momento, es mayor o menor de todas, y luego se realiza las comparaciones sucesivas con las restantes. Este método se adapta para los algoritmos de búsqueda externa (los campos no están simultáneamente en memoria, sino que ingresan registro a registro).

Inicio

LEER

A,B,C

EOF()

NO

B > MY SI

SI PARAR

A

A

MY = B

NO

C > MY SI

NO

MY = C

MY = A

MY

Page 14: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

búsqueda externa.

Debemos tener en cuenta para el desarrollo del método con búsqueda externa lo siguiente:

a) El ingreso de la información: los datos ingresan de a uno en la memoria.

b) Se supone al primer dato como mayor (no cualquiera de los campos como en búsqueda interna)

c) Se realiza la comparación de una variable (nota promedio) con respecto a la variable auxiliar MAYOR, y se repite dicha comparación hasta el fin del lote de datos, formando de esta manera un CICLO DE BUSQUEDA.

Las mismas consideraciones son válidas para la búsqueda de MINIMOS.

Page 15: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Inicio

LEER

LU, PROM

EOF()

NO

PROM > MY SI

SI

A

A

MY = PROM

MY = PROM

LEER

LU, PROM

No

"Promedio Mayor es"

MY PARAR

Una variante de este ejemplo es

que la variable auxiliar tenga un

valor inicial, que pueda darse de

la siguiente manera:

•Para la determinación de

máximos se colocará en la

variable el menor valor que por

la naturaleza de los datos pueda

requerirse.

•Para la determinación del

mínimo se colocará en la

variable el mayor valor que esta

pueda tomar, en función de la

naturaleza de los datos.

Page 16: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Inicio

EOF()

NO

PROM > MY SI

SI

A

A

MY = PROM

MY = 0

LEER

LU, PROM

No

"Promedio Mayor es"

MY PARAR

Cabe aclarar que en el último ejemplo se evita la doble lectura.El uso de estas técnicas, en búsquedas internas, es aconsejable cuando manejamos un número reducido de variables, con las salvedades y restricciones que en cada uno de los métodos ya mencionamos. En este caso se recomienda el uso de variables con subíndices o subindicadas.

Page 17: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda binaria

Es válido exclusivamente para datos ordenados y consiste en comparar en primer lugar con la componente central de la lista, y si no es igual al valor buscado se reduce el intervalo de búsqueda a la mitad derecha o izquierda según donde pueda encontrarse el valor a buscar.

El algoritmo termina si se encuentra el valor buscado o si el tamaño del intervalo de búsqueda queda anulado.

Este mecanismo es muy eficaz para buscar un elemento cualquiera que esté en una lista ordenada, y recibe el nombre de Búsqueda Binaria o Dicotómica cuya resolución se base en el algoritmo de divisiones sucesivas en mitades.

Page 18: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

IZQ CENTRAL DER

1 5 10

12 4

CENTRAL DERIZQ

43

IZQ= CENTRAL DER

A D G H K L N P S W

Buscar el valor G de la lista

Con cada iteración del método el espacio de búsqueda se reduce a la mitad, por lo tanto el número de comparaciones disminuye considerablemente en cada iteración. Esta disminución es mas significativa cuanto mayor sea el número de elementos de la lista.

Page 19: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Inicio

v (i)

i=1,100

ULTIMO = 100

PRIMERO = 1

V(CENTRAL) = X SI

NO

V(CENTRAL) > X SI

NO

ULTIMO =

CENTRAL - 1

PRIMERO =

CENTRAL + 1

PRIMERO <=

ULTIMO

NO

SI

"REGISTRO NO

ENCONTRADO"

"REGISTRO

ENCONTRADO"

V(CENTRAL)

PARAR

CENTRAL =

[(PRIMERO + ULTIMO) / 2]

Ingresar X

Parte Entera

Page 20: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

• En Pseudocódigo:• Comenzar• Leer X• Ingresar V(I) I = 1,100• ULTIMO = 100• PRIMERO = 1• Hasta PRIMERO <= ULTIMO• CENTRAL = [(PRIMERO + ULTIMO) / 2]• Si V(CENTRAL) = X• Entonces• Imprimir “Registro encontrado “ V(CENTRAL)• Parar• Fin_si• Si V(CENTRAL) > X• Entonces• ULTIMO = CENTRAL – 1• Si_no• PRIMERO = CENTRAL + 1• Fin_si• Fin_Mientras• Imprimir “Registro no encontrado”• Parar

Page 21: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Búsqueda binaria

• Igual que en el método secuencial la complejidad del método se va a medir por los casos extremos que puedan presentarse en el proceso de búsqueda.

• El caso mas favorable se dará cuando el primer elemento central es el buscado, en cuyo caso se hará una sola comparación. El caso mas desfavorable se dará cuando el elemento buscado no está en las sublistas, en este caso se harán en forma aproximada log 2(n) comparaciones, ya que en cada ciclo de comparaciones el número de elementos se reduce a la mitad, factor de 2. Por lo tanto, el número medio de comparaciones que se realizarán con este método es de: (1 + log 2(n)) / 2

• Si comparamos las fórmulas dadas en ambos métodos (ver apartado 5.1.1. Método secuencial), resulta que para el mismo valor de N el método binario es mas eficiente que el método secuencial; además la diferencia es mas significativa cuanto mas crece N.

Page 22: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Clasificación

• Clasificar u ordenar significa reagrupar o reorganizar un conjunto de datos en una secuencia específica. El proceso de clasificación y búsqueda es una actividad muy frecuente en nuestras vidas. Vivimos en un mundo desarrollado, automatizado, donde la información representa un elemento de vital importancia.

• Los elementos ordenados aparecen por doquier. Registros de pacientes en un hospital, directorios telefónicos, índice de libros en una biblioteca, son tal solo algunos ejemplos de objetos ordenados con los cuales el ser humano se encuentra frecuentemente.

• La clasificación es una actividad fundamental. Imaginémonos un alumno que desea encontrar un libro en una biblioteca que tiene 100000 volúmenes y estos están desordenados o están registrados en los índices por orden de fecha de compra. También podemos pensar lo que ocurriría si deseamos encontrar el número de teléfono de una persona y la guía telefónica se encuentra ordenada por número.

Page 23: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Clasificación

Sea A una lista de N elementos:A1, A2, A3, ........., An

Clasificar significa permutar estos elementos de tal forma que los mismos queden de acuerdo con un orden preestablecido.

Ascendente: A1 <= A2 <= A3 <= A4 ......<= An

Descendente: A1 >= A2 >= A3 >= A4 ...... >=An

En el procesamiento de datos, a los métodos de ordenación se les clasifica en dos categorías:

– Categoría de arreglos– Categoría de archivos

Page 24: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Clasificación

En cuanto a la cantidad de comparaciones que se realizan en un algoritmo se puede clasificar en:

– Directos de orden O (N2)– Logarítmicos de orden O(N * log N)

Los métodos directos tienen la característica de que su resolución es mas corta, de fácil elaboración y comprensión, aunque son ineficientes cuando el número de elementos de un arreglo N, es mediano o considerablemente grande.

Los métodos logarítmicos son mas complejos con respecto a los directos, pero requieren menos comparaciones y movimientos para ordenar sus elementos, pero su elaboración y compresión resulta mas sofisticada y abstracta.

• Se debe tener en cuenta que la eficiencia entre los distintos métodos se mide por el tiempo de ejecución del algoritmo y este depende fundamentalmente del número de comparaciones y movimientos que se realicen entre sus elementos.

• Por lo tanto podemos decir que cuando N es pequeño debe utilizarse métodos directos y cuando N es mediana o grande deben emplearse métodos logarítmicos.

Page 25: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Clasificación

Métodos:

Directos:– Ordenación por Intercambio Directo (Burbuja)– Ordenación por Selección (Obtención sucesivas de

menores)– Ordenación por Inserción (Baraja)

Logarítmicos:

– Método de Shell (Inserción con incrementos decrecientes)– Método de QuickSort (Clasificación Rápida)

Page 26: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por intercambio (BURBUJA).

Este método tiene dos versiones basadas en la misma idea que consiste en recorrer sucesivamente la lista o arreglo, comparando pares sucesivos de elementos adyacentes, permutando los pares desordenados.

Se realizan (n-1) pasadas, transportando en cada pasada el menor o mayor elemento (según sea el caso) a su posición ideal. Al final de las (n-1) pasadas los elementos del arreglo estarán ordenados.

El recorrido del vector se puede hacer de izquierda a derecha (desplazando los valores mayores hacia su derecha) o de derecha a izquierda (desplazando los valores menores hacia su izquierda), ambos para la clasificación en orden ascendente.

Page 27: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por intercambio (BURBUJA).

El algoritmo de resolución deberá seguir los siguientes pasos:

• Comparar elemento (1) y elemento (2); si están ordenados, se deja como está; caso contrario se realiza el intercambio.

• Se comparan los dos elementos siguientes adyacentes elemento (2) y (3); y de nuevo se intercambia si es necesario.

• El proceso continúa hasta que cada elemento del arreglo haya sido comparado con sus elementos adyacentes y hayan sido intercambiados en los casos necesarios.

Page 28: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por intercambio (BURBUJA).

La acción de intercambiar los elementos adyacentes requiere de una variable auxiliar. El proceso de esta triangulación será:

AUX = A(I)

A(I) = A(I+1)

A(I+1) = AUX

Page 29: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

15 42 33 7 10

15 42 33 7 10

15 42 33 7 10

15 33 42 7 10

15 33 7 42 10

INTERCAMBIA

INTERCAMBIA

INTERCAMBIA

15 33 7 10 42FIN DE LA

PASADA

1º Compar.

PRIMERA PASADA

2º Compar.

3º Compar.

4º Compar.

Luego de la primera pasada y al cabo de las

n-1 comparaciones el valor mas grande fue

situado en la última posición.

V =

15 33 7 10 42

15 33 7 10 42

15 7 33 10 42

15 7 10 33 42

INTERCAMBIA

INTERCAMBIA

15 10 7 33 42FIN DE LA

PASADA

1º Compar.

SEGUNDA PASADA

2º Compar.

3º Compar.

4º Compar.

Luego de la segunda pasada y al cabo de

las n-1 comparaciones el segundo valor

mas grande fue situado en la penúltima

posición.

7 10 15 33 42

. . . . . . . .

Es te proceso de llevar el mayor valor hac ia la parte derecha del

vector se repite hasta la última pasada, la cual nos asegura que el

vector queda completamente ordenado.

Page 30: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por intercambio (BURBUJA).

Luego de este análisis y en forma genérica podemos observar que si se efectúan n-1 pasadas y a su vez cada pasada requiere n-1 comparaciones, la ordenación total de una tabla exigirá

(n-1) * (n-1) = (n-1)2 comparaciones de elementos.

La cantidad de movimientos que se realicen en el arreglo dependerá del grado de desorden en que estén los datos.

Otro aspecto a considerar es el tiempo necesario para la ejecución del algoritmo, el mismo es proporcional a n2.

Page 31: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

COMENZAR

INGRESAR

N

J = 1

I = 1

LEER

A(I)

I = 1, N

A(I) > A(I+1) NO

SI

AUXI = A(I)

A(I) = A(I+1)

A(I+1) = AUXI

I = N - 1 NO

SI

I = I + 1

J = N - 1 NO

SI

J = J + 1

PARAR

Ciclo de Pasadas

Ciclo de

Comparaciones dentro

de cada pasada

Se permuta el par

utlizando una variable

auxiliar, si están

desordenados

Page 32: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por intercambio (BURBUJA).

ComenzarIngresar N

Ingresar A(I) I = 1,NDesde J = 1 hasta N –1

Desde I = 1 hasta N –1Si A(I) > A(I+1)

EntoncesAUXI = A(I)A(I) = A(I+1)A(I+1) = AUXI

Fin_siFin_desde

Fin_desdeParar

Page 33: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por selección

Este método consiste en buscar o seleccionar el elemento menor del arreglo y colocarlo en la primera posición, si el ordenamiento es ascendente. Luego se busca el segundo elemento mas pequeño y se lo ubica en la segunda posición y así sucesivamente hasta llegar al último elemento. Por basarse este mecanismo en obtener los menores y ubicarlos en la posición ideal, recibe el nombre de obtención sucesiva de menores.

• Con este mecanismo, si pretendemos ordenar en forma creciente una tabla que posee 100 elementos, el método obliga a recorrer la tabla tantas veces como elementos tenga menos uno.

• En el primer recorrido se averigua cual es el elemento menor y se intercambia con el que esté en la primera posición de la tabla.

• En el segundo recorrido se averigua el menor entre los restantes elementos y se lo intercambia con el que está en la segunda posición.

• El resto de los recorridos utilizará la misma lógica.

Page 34: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

15 42 10 7 33V =

15 42 10 7 33

PRIMER RECORRIDO: Se asigna 15 como menor valor

<

15 42 10 7 33

GUARDA MENOR

15 42 10 7 33

GUARDA MENOR

15 42 10 7 33

En el primer recorrido averigua el menor valor y guarda el mismo

y su posic ión en var iables auxiliares . Al f inal del recorrido

intercambia. En este recorrido realizó (n-1) comparaciones.

SEGUNDO RECORRIDO: Asigna 42 como menor valor

MENOR

15

MENOR

10

MENOR

7

MENOR

7

7 42 10 15 33

INTERCAMBIA

FIN DE

RECORRIDO

7 42 10 15 33

GUARDA MENOR

7 42 10 15 33

7 42 10 15 33

MENOR

10

MENOR

10

MENOR

10

7 42 10 15 33

7 10 42 15 33

INTERCAMBIA

FIN DE

RECORRIDO

En el segundo recorrido averigua siguiente de menor valor y lo

guarda con su pos ic ión en variables auxiliares. A l final del

recorr ido inte rcambia. En es te r ecorr ido realizó (n-2)

comparaciones.

TERCER RECORRIDO: Asigna 42 como menor valor

7 10 42 15 33

GUARDA MENOR

7 10 42 15 33

MENOR

15

MENOR

15

7 10 42 15 33

7 10 15 42 33

INTERCAMBIA

FIN DE

RECORRIDO

Al finalizar el tercer recorr ido intercambia el menor valor

averiguado entre los elementos res tantes, en la posic ión

correspondiente al tercer recorr ido. En es ta instac ia se

realizaron (n-3) comparaciones.

CUARTO RECORRIDO: Asigna 42 como menor valor

7 10 15 42 33

GUARDA MENOR

1ºMENOR

33

7 10 15 42 33

7 10 15 33 42

INTERCAMBIA

FIN DE

RECORRIDO

Al cabo del cuarto y últ imo recorr ido realiza una sola

comparación entre el último elemento y el supuesto menor

guardado en la variable auxiliar. En este caso corresponde el

intercambio dado que el valor 42 es el mayor y por lo tanto

debe ser movido a la últ ima posición. En esta instancia el

vector queda ordenado completamente. En la última pasada

se realiza 1 sola comparación.

Page 35: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por selección

Si analizamos el desarrollo anterior podemos darnos cuenta que se realizan (n-1) recorridos, lo cual es un inconveniente del método dado que nos obliga a recorrer la lista un número fijo de veces, sin detectar si esta queda ordenada en alguno de los recorridos.

Al igual que en el método por intercambio, el número de comparaciones entre elementos es independiente de la disposición inicial de los mismos.

En el primer recorrido se realizan (n-1) comparaciones, en el segundo recorrido (n-2) comparaciones y así sucesivamente hasta llegar al último recorrido en la cual se realiza 1 comparación.

Por lo tanto la cantidad total de comparaciones la expresamos de la siguiente manera:

C = (n-1) + (n-2) + ...... + 2 + 1 = n * (n-1) / 2

Que es igual a:C = n2 – n / 2

En cuanto al número de movimientos será n-1 ya que el método, tal cual está desarrollado, realiza intercambio de un elemento consigo mismo.

Page 36: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

COMENZAR

LEER N

LEER

V(I) I = 1, N

I = 1

MENOR= V(I)

K = I

J = I + 1

V(J) < MENOR SI MENOR = V(J)

K = J

NO

J = N

SI

V(K) = V(I)

V(I) = MENOR

NoJ = J + 1

I = N - 1 No I = I + 1

SI

PARAR

Realiza el intrecambio

Selecciona los

elementos menores

Comenzar

Leer N

Ingresar V(I) I = 1,N

Desde I = 1 hasta N –1

MENOR = V(I)

K = I

Desde J = I + 1 hasta J = N

Si V(J) < MENOR

Entonces

MENOR = V(J)

K = J

Fin_si

Fin_desde

V(K) = V(I)

V(I) = MENOR

Fin_desde

Parar

Page 37: Unidad 3: Eficiencia de Algoritmos - exa.unne.edu.ar · Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE. Búsqueda, Clasificación e Intercalación

Ordenación por Inserción

• Continuamos en la próxima clase …