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

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE CONTROL
Advertisements

Introducción a C#.
Complejidad Computacional
Complejidad Computacional
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Unidad 8 Métodos de Búsqueda
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Introducción Programación.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Complejidad de Algoritmos
ALGORITMOS DE ORDENAMIENTO
Ordenamiento Interno y Búsqueda Binaria
Subsistemas De un Sistema Operativo Celeste Domínguez Romo
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Operaciones sobre un árbol
Algoritmo y Estructura de Datos I I Facultad de Ingeniería y Arquitectura Juan José Montero Román. Sesión 6 - Uso de estructuras.
Curso de Java Estructura del Lenguaje
INFORMATICA I Arreglos 1 CLASE 17.
Árboles binarios. Algoritmos básicos
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.
Algoritmos de Búsqueda
VECTORES.
ESTRUCTURAS DE SECUENCIA
Introducción a la Computación (7ma Semana) Lunes 16 de Abril del 2007
METODO DE ORDENAMIENTO POR SELECCIÓN.
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2006 – II (7ma Semana) Lunes 18 de Setiembre del 2006 Juan José Montero Román.
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
7a.1 Silberschatz, Galvin y Gagne ©2003 Sistemas Operativos 6ª edición Capítulo 7: Sincronización de procesos parte a.
Arreglos: Vectores en JAVA
Material de apoyo Unidad 2 Estructura de datos
Ordenación, Clasificación
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Material de apoyo Unidad 8 Estructura de datos
Clase Teórica No. 4 Programación IV
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
GABIELA ORTEGA VAZQUEZ MARIA DE JESUSU MONTALVO MTV.
Introducción al análisis de algoritmos
Algoritmos.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capítulo 1 “Elementos de Programación”
ESTRUCTURA DE DATOS EN JAVA
Estructuras de Datos Arreglos.
Algoritmos de búsqueda
Métodos de búsqueda Unidad 6.
(Organización y Manejo de Archivos)
Using System; using System.IO; // Para StreamWriter public class Creacionachivo { public static void Main() { StreamWriter archivo; archivo = File.CreateText("prueba.txt");
Ordenación y Búsqueda.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Material de apoyo Unidad 7 Estructura de datos
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Ordenamiento en lenguaje c
Almacenamiento de la información IES Virgen del Espino.
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
MIA - Grupo 5 Unidad 2.

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

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

7 Ordenación externa. 7. 1 Algoritmos de ordenación externa. 7. 1 7 Ordenación externa. 7.1 Algoritmos de ordenación externa. 7.1.1 Intercalación directa. 7.1.2 Mezcla natural. 8 Métodos de búsqueda. 8.1 Algoritmos de ordenación externa. 8.1.1 Secuencial. 8.1.2 Binaria. 8.1.3 Hash. 8.2 Búsqueda externa. 8.2.1 Secuencial. 8.2.2 Binaria. 8.2.3 Hash.

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.

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.

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.

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.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. 

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.

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

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

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

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

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

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

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

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

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

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 &&

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();

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.

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

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

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();