La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez

Presentaciones similares


Presentación del tema: "Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez"— Transcripción de la presentación:

1 Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Estructura de Datos

2 7 Ordenación externa. 7. 1 Algoritmos de ordenación externa. 7. 1
7 Ordenación externa Algoritmos de ordenación externa Intercalación directa Mezcla natural. 8 Métodos de búsqueda Algoritmos de ordenación externa Secuencial Binaria Hash. 8.2 Búsqueda externa Secuencial Binaria Hash.

3 Objetivo: Organizará un conjunto de datos almacenados externamente. Comprenderá las características de los diferentes métodos de búsqueda para recuperar datos almacenados y su implementación en un lenguaje de programación.

4 7.1. Algoritmos de ordenación externa.
Es un término genérico para los algoritmos de ordenamiento que pueden manejar grandes cantidades de información. El ordenamiento externo se requiere cuando la información que se tiene que ordenar no cabe en la memoria principal de una computadora (típicamente la RAM) y un tipo de memoria más lenta (típicamente un disco duro) tiene que utilizarse en el proceso. Existen otros tipos de memoria externa que son los usb de almacenamiento entre otros. La Ordenación externa de los datos están en un dispositivo de almacenamiento externo (Archivos) y su ordenación es más lenta que la interna.

5 7.1.1. Intercalación Directa(Merge Sort)
Intercalación (MERGE) es el proceso de combinar dos o mas archivos (arreglos) ordenados en un tercer archivo ordenado. Este algoritmo de comparación, es estable ya que se mantiene el orden relativo de registros con claves iguales. Es un tipo de algoritmo “DIVIDE Y VENCERAS”. Fue inventado por John Von Newmann en 1945.

6 7.1.1. Intercalación Directa(Merge Sort)
Esta tecnica funciona de la siguiente manera: Dividir el archivo en n subarchivos de tamaño 1 e intercalar pares adyacentes (inconexos) de archivos. Entonces tenemos mas o menos n/2 archivos de tamaño 2. Repetir el proceso hasta que solo reste un archivo de tamaño n.

7 7.1.1. Intercalación Directa(Merge Sort)
Estabilidad del algoritmo Cuando los elementos iguales son indistinguibles, como con los enteros, o mas generalmente, cualquier dato en el que el elemento es la llave, la estabilidad no es un problema. Sin embargo, asumamos que los siguientes pares de números se van a ordenar por su primera componente: (4, 1)  (3, 7)  (3, 1)  (5, 6) En este caso, el resultado puede ser dos ordenaciones posibles, uno que mantiene el orden relativo de los registros con llaves iguales y otro que no: (3, 7)  (3, 1)  (4, 1)  (5, 6) (Se mantiene) (3, 1)  (3, 7)  (4, 1)  (5, 6) (Se cambia) Los ordenamientos inestables pueden cambiar el orden relativo, pero en el ordenamiento estable nunca sucede esto. 

8 7.1.1. Intercalación Directa(Merge Sort)
Eficiencia del algoritmo MERGESORT es mas eficiente que quicksort  para algunos tipos de listas con datos a ordenar que pueden ser solamente accesadas eficientemente de manera secuencial, y esto es popular en lenguajes de programación como LISP, donde  el acceso a estructuras de datos de forma secuencial es muy común.

9 Algoritmo de Ordenamiento por Mezcla
Si se tiene los siguientes elementos: 3,9,15, separación 65 3,9,15,65,90 mezcla 3 9 15 90 65

10 Ejercicio DISRIBUCIÓN
A 8,65,8550 9, 0,1,43 7,10 B 2,16 3,

11 Ejercicio MEZCLA A 8,65,8550 9, 0,1,43 7,10 B 2,16 3, C 2,8,16,65,8550 3,9,100 0,1,40,43 6,7,10

12 Ejercicio DISTRIBUCIÓN
A 2,8,16,65,8550 0,1,40,43 B 3,9,100 6,7,10 C

13 Ejercicio MEZCLA A 2,8,16,65,8550 0,1,40,43 B 3,9,100 6,7,10 C 2,3,8,9,16,65,100,8550 0,1,6,7,10,40,43

14 Ejercicio DISTRIBUCIÓN
A 2,3,8,9,16,65,100,8550 B 0,1,6,7,10,40,43 C

15 Ejercicio MEZCLA A 2,3,8,9,16,65,100,8550 B 0,1,6,7,10,40,43 C 0,1,2,3,6,7,8,9,10,16,40,43,65,100,8550

16 8 Métodos de búsqueda. Realizar la búsqueda en un arreglo en C# desordenado, el programa debe mostrar si lo encontró y en qué posición ejemplo Dato: 19 Dato encontrado: 3 posición Dato: 30 Dato no encontrado 3 5 19 10

17 8 Métodos de búsqueda. Realizar la búsqueda en un arreglo en C#, ordenado, el programa debe mostrar si lo encontró y en qué posición ejemplo optimizarlo en tiempo de ejecución y en cantidad de código realizarlo de manera individual entregarlo en una hoja con su nombre Dato: 19 Dato encontrado: 4 posición Dato: 30 Dato no encontrado 3 5 10 19

18 8.2 Búsqueda externa. 8.2.1 Secuencial.
Seudocódigo: //valor: valor a buscar //a: arreglo i=0; encontrado=false; Do if valor ==a[i] encontrado = true; escribir se encontró en la posición i; i++; While encontrado =false &&

19 using System; public class CBusquedaSecuencial { //Creación de un Arreglo public static void Main(string[] args) int numero; Console.Write("Número de datos del arreglo "); numero = Int32.Parse(Console.ReadLine()); int[] a = new int[numero]; int i = 0; Console.Write("Número a buscar "); valor = Int32.Parse(Console.ReadLine()); Console.writeLine("Introduce los valores de la matriz"); for (i=0; i<numero; i++) Console.write("a["+i+"]= "); a[i]=Int32.Parse(Console.ReadLine()); } i=0; bool encontrado = false; int valor; Console.write("Número a buscar "); do if (valor == a[i]) encontrado = true; Console.Write("Número encontrado en la posición "+i); i++; } While (encontrado == false && i < a.Length); if (encontrado ==false) Console.Write("Número no encontrado"); Console.ReadLine();

20 8.2.2 Binaria. Un método eficiente de búsqueda, que puede aplicarse a las matrices clasificadas, es la búsqueda binaria. Si partimos de que los elementos de la matriz están almacenados en orden ascendente, el proceso de búsqueda binaria puede describirse así: se selecciona el elemento del centro o aproximadamente del centro de la matriz. Si el valor a buscar no coincide con el elemento seleccionado y es mayor que él, se continúa la búsqueda en la segunda mitad de la matriz. Si, por el contrario, continúa en la primera mitad de la matriz. En ambos casos, se halla de nuevo el elemento central, correspondiente al nuevo intervalo de búsqueda, repitiéndose el ciclo. El proceso se repite hasta que se encuentra el valor a buscar, o bien hasta que el intervalo de búsqueda sea nulo, lo que querrá decir que el elemento buscado no figura en la matriz.

21 1 2 3 4 5 6 7 8 9 10 Ejemplo Se divide en dos segmentos,
Buscar por el método Binario 1 2 3 4 5 6 7 8 9 10 Número a buscar: 3 Se divide en dos segmentos, Mitad = (0+9)/2 = 4 Se compara si el valor es mayor al número en la posición superior a la mitad 3 > a[4] si no se cambia el valor del límite superior a mitad-1 Se evalúa si 3 == a[4] y si el límite inferior es menor igual al superior Mitad = (0+3)/2 = 1 Si 3>a[1] se cambia el límite inferior a mitad+1 Se evalúa si 3 == a[1] y si el límite inferior es menor igual al superior Mitad=(1+3)/2=2 Si 3 >a[2] si no se cambia el valor del límite superior a mitad-1 Se evalúa si 3 ==a[2] y si el límite inferior es menor igual al superior Se sale del ciclo

22 1 2 3 4 5 6 7 8 9 10 Inferior = 0 mitad Superior = 9 1 2 3 4 5 6 7 8 9 10 Superior = 3 Inferior = 0 mitad

23 using System; public class CBusquedaBinaria { //Creación de un Arreglo public static void Main(string[] args) int numero; Console.Write("Número de datos del arreglo "); numero = Int32.Parse(Console.ReadLine()); int[] a = new int[numero]; int i = 0; int valor=0; Console.Write("Número a buscar "); valor = Int32.Parse(Console.ReadLine()); Console.WriteLine("Introduce los valores de la matriz"); for (i=0; i<numero; i++) Console.Write("a["+i+"]= "); a[i]=Int32.Parse(Console.ReadLine()); } int inferior=0, superior = a.Length-1; int mitad=0; do mitad = (inferior+superior)/2; if (valor > a[mitad]) inferior = mitad + 1; else superior = mitad -1; } while (a[mitad] != valor && inferior <=superior); if (a[mitad]==valor) Console.Write("Número encontrado en la posición "+mitad); Console.Write("Número no encontrado"); Console.ReadLine();


Descargar ppt "Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez"

Presentaciones similares


Anuncios Google