Curso de Programación 1 Plan 97

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
IBD Curso 2007 Clase 2.
Método de ordenación por inserción
Interfases Contables en CIO
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
Programación de Computadores
IBD Clase 7.
Unidad de competencia II Estadística descriptiva:
Programación II Recursividad
Los elementos invertibles de Z6 son 1 y 5
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
Parte 3. Descripción del código de una función 1.
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
Diseño y análisis de algoritmos
Programación y Estructuras de Datos
Operaciones sobre un árbol
Ecuaciones y Resolución de Ecuaciones Lineales
Expresiones Racionales
Exponentes Racionales y Radicales
Bloque 2: Divide y Vencerás
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Unidad 4: Análisis de algoritmos (parte II)
3. Métodos de resolución Ecuaciones algebraicas lineales
Árboles binarios. Algoritmos básicos
FORTRAN 90 arreglos.
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.
Preguntas tipo test (Tema I)
Algoritmos de Búsqueda
Teoría de lenguajes y compiladores
CULENDARIO 2007 Para los Patanes.
Solución de problemas por búsqueda inteligente
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
ESCUELA: NOMBRES: LÓGICA DE LA PROGRAMACIÓN UNIDAD 2: Naturaleza de los Datos FECHA: Ing. Patricio Abad Espinoza OCTUBRE 2009 – FEBRERO Ciencias.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
VBA - Procedimientos Subprogramas (Procedimientos): Procedimientos Sub
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Departamento de Informática Universidad Técnica Federico Santa María Tema 7: Subprogramas Programación de Computadores (IWI-131) Luis Pizarro Q.
Inteligencia Artificial Resolver problemas mediante búsqueda
Ordenación, Clasificación
Estructuras de control
ESCUELA PROFESIONAL DE INGENIERIA INDUSTRIAL CURSO: GESTION DE LA CALIDAD ING.ELIZABETH FERG 1.
Algoritmos de ordenación
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
7.  El TDA Diccionario.
Algoritmos.
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Estructura de Datos y Algoritmos
COMPUTACION 2009 Clase 6 Clase 7.
Algoritmos de búsqueda
Métodos de búsqueda Unidad 6.
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Aplicación de estructuras de datos
Programación I Arreglos II- Matrices.
Teoría – Alejandro Gonzalez
Diseño y análisis de algoritmos Clasificación II.
Control de Flujo.
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León

ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Transcripción de la presentación:

Curso de Programación 1 Plan 97 Clase 10 (Búsqueda y Ordenación)

Programación 1. Plan 97. InCo. Fac. de Ingeniería Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos dos métodos de búsqueda: búsqueda lineal búsqueda binaria Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Búsqueda lineal En la búsqueda lineal se recorre en forma secuencial el array hasta que se encuentra el elemento deseado, o se examinan sin éxito todos los elementos del array. A[1] A[2] A[3] ... A[n] v1 v2 v3 ... vn v3 Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ejemplo Supongamos que una casa de venta de repuestos de automóvil ofrece 100 tipos de piezas diferentes. Cada pieza tiene un código el cual viene dado por un entero. La información de cuáles son los códigos de pieza a la venta se encuentra almacenada en una tabla no ordenada: Type Tabla = array [1..100] of integer; Var piezas : Tabla; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ejemplo Para consultar si una determinada pieza es vendida o no por la casa de repuestos debemos entonces recorrer el array piezas comparando por código de pieza. Por ejemplo, 100 1 2 3 4 ... 9981 4218 3245 1423 ... 2512 1423 Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ejemplo Definiremos una función BLineal la cual devuelve un booleano que indica si la pieza esta o no a la venta. Los parámetros de entrada son los siguientes: piezas -- el array con las piezas a la venta p -- código de pieza a consultar Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Function BLineal(p: integer; piezas: Tabla): boolean; Var (* variables locales *) esta, sinexito: boolean; indice: 1..100; begin (* inicializacion de variables *) esta := false; sinexito := false; indice := 1; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería repeat if p = piezas[indice] then esta := true else if indice = 100 then sinexito := true else indice := indice + 1 until esta or sinexito; BLineal := esta; end; (* fin BLineal *) Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Búsqueda binaria La búsqueda de un elemento en un array puede acelerarse en forma considerable si los elementos del mismo están ya ordenados. En tal caso, una forma eficiente de búsqueda es el de división sucesiva en partes iguales del intervalo donde debe buscarse el elemento. Este método se conoce con el nombre de búsqueda binaria o bipartición. Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Búsqueda binaria Intuitivamente el algoritmo de búsqueda binaria procede de la siguiente forma: 1. Mirar si el elemento que se busca está en el punto medio del intervalo. 2. Si no está en esa posición, entonces repetir la búsqueda, pero concentrándose ahora en la primera o segunda mitad del intervalo, según sea el elemento menor o mayor que el valor en el punto medio. Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería 2 3 4 5 6 7 8 4 7 12 14 19 25 30 38 1 2 3 5 6 7 8 4 7 12 19 25 30 38 1 3 5 7 8 4 12 19 30 38 8 38 Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Búsqueda binaria Supongamos que estamos buscando un valor x en un intervalo inf..sup. Si x está en la posición medio = (inf + sup) DIV 2 entonces la búsqueda fue exitosa. Caso contrario, si x < valor en medio, entonces buscar en el intervalo inf..medio -1. sino buscar en el intervalo medio+1..sup. Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Búsqueda binaria Existe otra condición de detención del algoritmo que corresponde al caso en que el valor x buscado no está en el array. Dicha condición es verificable en cada iteración del algoritmo. Determina si el intervalo donde vamos a realizar la próxima búsqueda es vacío o no. Esto se verifica fácilmente: inf..sup vacío ?  inf  sup Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ejemplo Function BBinaria(p: integer; partes:Tabla):boolean; Var (* variables locales *) esta: boolean; inf, sup, medio: integer; begin (* inicializacion de variables *) esta := false; inf := 1; sup := 100; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ejemplo repeat medio := (inf + sup) DIV 2; if p = piezas[medio] then esta := true else if p < piezas[medio] then sup := medio - 1 else inf := medio + 1 until esta or (inf > sup); BBinaria := esta; end; (* fin BBinaria *) Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Versión Recursiva Function RecBBin(inf, sup, p: integer; piezas: Tabla): boolean; var medio: integer; begin if inf > sup then RecBBin := false else ... Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería else begin medio := (inf + sup) div 2; if p = piezas[medio] then RecBBin := true else if x < piezas[medio] then RecBBin := RecBBin(inf,medio-1, p,piezas) RecBBin := RecBBin(medio+1,sup, end end; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ordenación Por ordenar se entiende el proceso de reorganizar un conjunto de objetos en una cierta secuencia de acuerdo a un criterio especificado. En general, el objetivo de este proceso es facilitar la posterior búsqueda de elementos en el conjunto ordenado. Por ejemplo, el método de búsqueda binaria necesita que el array esté ordenado para poder ser aplicado. Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ordenación Existen múltiples ejemplos reales de conjuntos ordenados: la guía telefónica, índices de libros, ficheros de bibliotecas, diccionarios, ficheros de diverso tipo en oficinas, actas de exámenes, etc. En la literatura existe una gran variedad de métodos para ordenar arrays. Veremos uno de esos métodos, llamado ordenación por inserción. Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Ordenación Ordenar un conjunto de objetos a1,a2,...,an consiste en encontrar una permutación ak1,ak2,...,akn tal que dada una función de ordenación ƒ se verifique: ƒ(ak1)  ƒ(ak2)  ...  ƒ(akn) Normalmente, aplicar la función ƒ a un objeto ai corresponde a seleccionar el valor de alguno de sus componentes (por ej., un campo en el caso de registos). A ese valor se le denomina la clave del objeto. En otros casos ƒ es simplemente la identidad (por ej., cuando los ai son escalares). Programación 1. Plan 97. InCo. Fac. de Ingeniería

Ordenación por Inserción El método de ordenación por inserción debe su nombre al hecho que en la i-ésima pasada se ``inserta´´ el i-ésimo elemento del array en el lugar adecuado entre los i-1 elementos que lo preceden, los cuales ya fueron ordenados previamente. Como resultado de esta inserción los i primeros elementos del array quedan ordenados. 1 j i-1 i n Programación 1. Plan 97. InCo. Fac. de Ingeniería

Ordenación por Inserción Supongamos que el array a ordenar es Var A : array [1..n] of T entonces el método procede de esta forma: for i := 2 to n do mover A[i] hasta la posición j  i tal que ƒ(A[i])  ƒ(A[k]) para j  k  i, y ƒ(A[i])  ƒ(A[j-1])  j = 1 Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Var i,j: 1..n; parar: boolean; for i := 2 to n do begin j := i; parar := false; repeat if ƒ(A[j])  ƒ(A[j-1]) then begin intercambio(A[j], A[j-1]); if j  2 then j := j - 1 else parar := true end until parar end; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Ordenación por Selección Se localiza el elemento de mayor clave del array y se lo intercambia con el elemento que se encuentra en la última posición. Se repite este procedimiento en la porción del array que no incluye la última posición. mayor Programación 1. Plan 97. InCo. Fac. de Ingeniería

Ordenación por Selección Supongamos nuevamente que el array a ordenar es Type arreglo = array [1..n] of T; Var A : arreglo; El método procede entonces de esta forma: for i := n downto 2 do encontrar el máximo entre 1 e i intercambiar el máximo con el elemento A[i] Programación 1. Plan 97. InCo. Fac. de Ingeniería

Encontrar el índice del máximo Function maximo(ultimo : integer; A : arreglo) : integer; var j, max : integer; begin max := 1; for j := 2 to ultimo do if ƒ(A[j]) > ƒ(A[max]) then max := j; maximo := max end; Programación 1. Plan 97. InCo. Fac. de Ingeniería

Programación 1. Plan 97. InCo. Fac. de Ingeniería Procedure Seleccion(var A : arreglo); var i, mayor : integer; temp : T; begin for i := n downto 2 do mayor := maximo(i,A); temp := A[mayor]; A[mayor] := A[i]; A[i] := temp end end; Programación 1. Plan 97. InCo. Fac. de Ingeniería