La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof.

Presentaciones similares


Presentación del tema: "ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof."— Transcripción de la presentación:

1 ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ 2017-30-2-0019 8/4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof. Edwin Lopez

2 ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA 3.5 Mezcla directa (Intercalación) 3.6 Mezcla natural (Intercalación) 3.7 Busqueda secuencial 3.8 Busqueda binaria 3.9 Busqueda hash 8/4/2019 ALGORITMO Y ESTRUCTURA DE DATOS II 2 MARCOS RODRIGUEZ

3 Ordenación externa Mezcla directa (Intercalación) Mezcla natural (Intercalación) Metodos de busqueda Busqueda secuencial Busqueda bicotómica (binaria) Busqueda hash 8/4/2019 3 UNIDAD 3 ORDENAMIENTO Y BUSQUEDA ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

4 La idea central de este algoritmo consiste en realizar de forma sucesiva una partición y una fusión que produce secuencias ordenadas de longitud cada vez mayor. En la primera pasada la partición es de longitud 1 y la fusión produce secuencias ordenadas de longitud 2. En la segunda pasada la partición es de longitud 2 y la fusión produce secuencias ordenadas de longitud 4. Este proceso se repite hasta que la longitud de la partición sea menor o igual al número de elementos del archivo original. Ejemplo. Considere el archivo F con los elementos 324, 230, 942, 700, 714, 139, 6, 915, 890 y 717, y los archivos auxiliares F1 y F2. El proceso de ordenamiento según la descripción del algoritmo anterior seria: 8/4/2019 4 3.5 Mezcla directa (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

5 F: 324, 230, 942, 700, 714, 139, 6, 915, 890, 717 T. Partición: 1 Partición: Se construye tomando un número para cada una de las particiones F1: 324, 942, 714, 6, 890 F2: 230, 700, 139, 915, 717 Fusión: Se fusionan las dos particiones comparando el menor de la partición va primero F: 230, 324, 700, 942, 139, 714, 6, 915, 717, 890 T. Partición: 2 Partición: Se construye tomando dos números para cada una de las particiones F1: 230, 324, 139, 714, 717, 890 F2: 700, 942, 6, 915 8/4/2019 5 3.5 Mezcla directa (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

6 Partición: //parte repetida F1: 230, 324, 139, 714, 717, 890 F2: 700, 942, 6, 915 Fusión: F: 230, 324, 700, 942, 6, 139, 714, 915, 717, 890 T. Partición: 4 Partición: F1: 230, 324, 700, 942, 717, 890 F2: 6, 139, 714, 915 8/4/2019 6 3.5 Mezcla directa (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

7 Fusión: F: 6, 139, 230, 324, 700, 714, 915, 942, 717, 890 T. Partición: 8 Partición: F1: 6, 139, 230, 324, 700, 714, 915, 942 F2: 717, 890 Fusión F: 6, 139, 230, 324, 700, 714, 717, 890, 915, 942 8/4/2019 7 3.5 Mezcla directa (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

8 La idea central de este algoritmo consiste en realizar particiones tomando secuencias ordenadas de máxima longitud en lugar de secuencias ordenadas de tamaño fijo previamente determinadas, como la intercalación directa. Posteriormente se realiza la fusión de esas secuencias ordenadas, alternándolas entre los dos archivos auxiliares. Repitiendo este proceso, se logra que el archivo quede completamente ordenado. Para aplicar este algoritmo, se necesitarán cuatro archivos. El archivo original y tres archivos auxiliares. De estos cuatro archivos, dos serán considerados de entrada y dos de salida, alternativamente en cada paso del algoritmo. El proceso termina cuando al finalizar un paso, el segundo archivo de salida quede vacío y el primero queda completamente ordenado. Ejemplo. Considere el archivo F con los elementos 324, 230, 942, 700, 714, 139, 6, 915, 890 y 717, y los archivos auxiliares F1, F2 y F3. El proceso de ordenamiento según el algoritmo anterior seria: 8/4/2019 8 3.6 Mezcla natural (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

9 F: 324, 230, 942, 700, 714, 139, 6, 915, 890, 717 Partición inicial F1: 324, 700, 714, 6, 915, 717 F2: 230, 942, 139, 890 Fusión-Partición F: 230, 324, 700, 714, 942 F3: 6, 139, 890, 915, 717 8/4/2019 9 3.6 Mezcla natural (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

10 Fusión-Partición F1: 6, 139, 230, 324, 700, 714, 890, 915, 942 F2: 717 Fusión-Partición F: 6, 139, 230, 324, 700, 714, 717, 890, 915, 942 F3: (sin elementos) 8/4/2019 10 3.6 Mezcla natural (Intercalación) ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

11 Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del arreglo hasta encontrarlo, o hasta que se llegue al final. 8/4/2019 11 3.7 Busqueda secuencial ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

12 Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias. Está altamente recomendado para buscar en arrays de gran tamaño. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como máximo 26 comparaciones (en el peor de los casos). 8/4/2019 12 3.8 Busqueda binaria ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

13 8/4/2019 13 ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

14 8/4/2019 14 3.8 Busqueda binaria ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

15 Existe un método que puede aumentar la velocidad de búsqueda donde los datos no necesitan estar ordenados y esencialmente es independiente del número n. Este método se conoce como transformación de claves o hashing. El hashing consiste en convertir el elemento almacenado (numérico o alfanumérico) en una dirección (índice) dentro del array. Funciones Hash más usadas: 1. Hash de División: Dado un diccionario D, se fija un número m >= |D| (m mayor o igual al tamaño del diccionario) y que sea primo no cercano a potencia de 2 o de 10. Siendo k la clave a buscar y h(k) la función hash, se tiene h(k)=k%m (Resto de la división k/m). 8/4/2019 15 3.8 Busqueda hash ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ

16 2. Hash de Multiplicación Si por alguna razón, se necesita una tabla hash con tantos elementos o punteros como una potencia de 2 o de 10, será mejor usar una función hash de multiplicación, independiente del tamaño de la tabla. Se escoge un tamaño de tabla m >= |D| (m mayor o igual al tamaño del diccionario) y un cierto número irracional φ (normalmente se usa 1+5^(1/2)/2 o 1-5^(1/2)/2). De este modo se define h(k)= Suelo(m*Parte fraccionaria(k*φ)) 8/4/2019 16 3.8 Busqueda hash ALGORITMO Y ESTRUCTURA DE DATOS IIMARCOS RODRIGUEZ


Descargar ppt "ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof."

Presentaciones similares


Anuncios Google