Orden en la sala! Herman Schinca. Clase de Mayo de 2011

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Orden en la sala! Herman Schinca. Clase de Mayo de 2011"

Transcripción

1 Orden en la sala! Herman Schinca Clase de Mayo de 2011

2 Todos los lenguajes todos Hoy veremos algoritmos. Y eso qué es? Son independientes del lenguaje en que se implementen. Son independientes de la existencia de las computadoras.

3 Orden: ingredientes Un tipo de dato (int, char, float, bool) + Una relacion de orden sobre ese tipo (menor, mayor, más lindo, R(x,y))

4 Ordenando arreglos Problema: Tengo un arreglo de números enteros y los quiero ordenar siguiendo algún criterio. Por ejemplo, de menor a mayor. Ideas?

5 Vago Sort Me fijo si ya está ordenado. Si lo está, genial. Sino, aduzco que hubo un problema con el sistema operativo :-P.

6 Bogo Sort Me fijo si ya está ordenado. Si lo está, genial. Sino, lo mezclo al azar y vuelvo a empezar. Termina? Es un buen algoritmo? Qué significa que sea bueno? Cuál es la moral de los algoritmos?

7 3 Ejes A la hora de pensar un algoritmo debo tener en cuenta (al menos) 3 cuestiones imprescindibles: 1. Terminación 2. Correctitud 3. Complejidad/Eficiencia Hay diversas técnicas particulares pero, en general, se trata de problemas no decidibles!

8 3 Ejes En la materia no veremos en profundidad dichas técnicas formales. Sin embargo, es una buena práctica el pensar si el algoritmo que tenemos en mente satisface nuestras necesidades: termina, hace lo que queremos que haga y puedo predecir su rapidez.

9 Selection Sort En cada paso elijo el elemento más chico de lo que queda por ordenar, y lo coloco en su lugar definitivo, es decir, a continuación del que elegí en el paso anterior.

10 Selection Sort: Ejemplo [5,4,2,1,3] [1,4,2,5,3] [1,2,4,5,3] [1,2,3,5,4] [1,2,3,4,5] Fin

11 Selection Sort: Código void ordenar (int* a, int tam){ for (int i = 0; i < tam-1; i++) { int k = i; for (int j = i+1; j < tam; j++) { if (a[j] < a[k]) { k = j; } } int aux = a[i]; a[i] = a[k]; a[k] = aux; } }

12 Selection Sort: Terminación Termina? Siempre? Por qué?

13 Selection Sort: Correctitud Qué habría que ver? 1. Termina (slide anterior). 2. Tengo exactamente los mismo elementos que al inicio, ni más, ni menos, ni otros. 3. El arreglo está ordenado.

14 Selection Sort: Correctitud El Selection Sort es...

15 Selection Sort: Contando Operaciones Vamos a suponer que las operaciones básicas tienen el mismo costo computacional: +,-,*,/,==,=,etc. Vamos a contar cuántas operaciones realiza el algoritmo en el peor caso. Va a depender del tamaño de la entrada.

16 Selection Sort: Contando Operaciones void ordenar (int* a, int tam){ for (int i = 0; i < tam-1; i++) { int k = i; for (int j = i+1; j < tam; j++) { if (a[j] < a[k]) { k = j; } } int aux = a[i]; a[i] = a[k]; a[k] = aux; } } 2 op 1 op 2*(tam-1-i) op (tam-1-i) op (tam-1-i) op 3 op

17 Selection Sort: Contando Operaciones

18 Insertion Sort En cada paso coloco el elemento en que estoy parado en su posición definitiva, relativa a lo elementos ya visitados.

19 Insertion Sort: Ejemplo [5,4,2,1,3] [5,4,2,1,3] [4,5,2,1,3] [2,4,5,1,3] [1,2,4,5,3] [1,2,3,4,5] Fin

20 Insertion Sort: Código void insertionsort (int *a, int tam){ for (int i=0; i < tam; i++) { for (int j=i; 0 < j && a[j] < a[j-1]; j--) { int aux = a[j]; a[j] = a[j-1]; a[j-1] = aux; } } }

21 Insertion Sort: Ejercicio Razonar acerca de su terminación. Mostrar informalmente su correctitud. Contar la cantidad de operaciones aproximada y comparar con Selection Sort. Es mejor? Por qué? Existen casos en donde convenga usar Insertion en vez de Selection?

22 Bubble Sort En cada paso recorro el arreglo desde atrás para seleccionar el elemento más pequeño que aún no ha sido ordenado.

23 Bubble Sort: Ejemplo [5,4,2,1,3] [1,2,5,4,3] [1,2,3,5,4] [1,2,3,4,5] [1,2,3,4,5] Fin

24 Bubble Sort: Ejemplo Zoom In Pero cómo hace para ir de [5,4,2,1,3] [1,2,5,4,3]? [5,4,2,1,3] [5,4,2,1,3] [5,4,1,2,3] [5,1,4,2,3] [1,5,4,2,3]...

25 Bubble Sort: Código void bubblesort (int *a, const int tam){ for (int i=0; i < tam-1; i++) { for (int j=tam-1; i < j; j--) { if (a[j] < a[j-1]) { int aux = a[j]; a[j] = a[j-1]; a[j-1] = aux; } } } }

26 Bubble Sort: Ejercicio Razonar acerca de su terminación. Mostrar informalmente su correctitud. Contar la cantidad de operaciones aproximada y comparar con Selection e Insertion Sort. Es mejor? Por qué? Existen casos en donde convenga usar Bubble Sort?

27 Tomar tiempos Antes de ejecutar la función que ordena: unsigned long comienzo = clock(); Luego de la llamada: unsigned long fin = clock(); Para mostrar la diferencia: printf("t: %d\n",fin-comienzo);

28 Experimentos Generar arreglos de 10, 100, y elementos. Ordenados de menor a mayor; de mayor a menor; desordenados. Tomar tiempos para los 3 algoritmos y sacar concluciones.

29 Experimentos: aleatoreidad Para generar valores aleatorios usar la función rand() que devuelve un entero entre 0 y Pueden utilizar % para restringir los valores. Por ejemplo, quiero valores entre 0 y 9: int valor = rand() % 10;

30 Experimentos: más aleatoreidad La función rand() utiliza una semilla. Por defecto es siempre la misma. Para generar nuevas semillas, antes de usar rand, llamamos a: srand (time(null));

31 Optimizaciones Luego de analizar los resultados de los experimentos, pensar e implementar ideas para mejorar alguno/s de los algoritmos vistos sin perder el concepto del mismo. Analizar su corrección y comparar tiempos para comprobar si optimizaron.

32 Desafío Se tienen N pares, donde la primera componente es un número y la segunda es un color (rojo, azul y ámbar). Además, se encuentran ordenados según el número. Dar un algoritmo que los ordene por color (según rojo-azul-ámbar) pero manteniendo el orden entre los números de un mismo color. La cantidad de operaciones del algoritmo debe ser del orden de N. Justificar TODO!

33 Desafío: Ejemplo R=Rojo, Z=Azul, A=Ámbar (1,Z), (3,R), (4,Z), (6,A), (9,R) (3,R), (9,R), (1,Z), (4,Z), (6,A)

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

Arreglos. Donde en cada posición del array se puede guardar un elemento. tipo_dato nombre_array[cant_elem];

Arreglos. Donde en cada posición del array se puede guardar un elemento. tipo_dato nombre_array[cant_elem]; Arreglos Los arreglos o arrays son colecciones de datos del mismo tipo. De esta manera, podemos encontrar arrays de números enteros, arrays de números double, arrays de caracteres. Tradicionalmente, la

Más detalles

11-Ordenar Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort.

11-Ordenar Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort. 11-Ordenar 11.1 Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort 11: Ordenar 2 Definiciones Se desea ordenar un set de estructuras, que contienen

Más detalles

Proyecto 1: Algoritmos de Ordenación

Proyecto 1: Algoritmos de Ordenación Proyecto 1: Algoritmos de Ordenación Algoritmos y Estructuras de Datos II - Laboratorio Docentes: Natalia Bidart, Matías Bordese, Diego Dubois, Leonardo Rodríguez. Objetivos La implementación en C de los

Más detalles

Busqueda y Ordenamiento. CC1001 Computación I

Busqueda y Ordenamiento. CC1001 Computación I Auxiliar 10: Busqueda y Ordenamiento 1 Algoritmos de Busqueda Los algoritmos de busqueda son muy importantes para la computación, en la mayoría de las aplicaciones los utilizaremos, basta recordar la Tarea

Más detalles

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados Lenguajes de programación Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Teórica - clase 3 Introducción a la programación imperativa Las computadoras

Más detalles

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 6 Ciclos y arreglos Entidad fundamental:

Más detalles

Ordenamiento (Sorting)

Ordenamiento (Sorting) Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la

Más detalles

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar

Más detalles

Tema: Métodos de Ordenamiento. Parte 1.

Tema: Métodos de Ordenamiento. Parte 1. Programación IV. Guía 2. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 1. Objetivos Específicos Identificar la estructura de algunos algoritmos

Más detalles

Práctica 3: Realce de imágenes

Práctica 3: Realce de imágenes Prácticas de laboratorio Práctica 3: Realce de imágenes 1. DESCRIPCIÓN Y REALIZACIÓN DEL PROBLEMA Se trata de desarrollar un conjunto sencillo de algoritmos en C para ejecutar operaciones de REALCE por

Más detalles

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Sistemas Computacionales Estructura de Datos II Docente:

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Memoria, apuntadores y arreglos Francisco Javier Zaragoza Martínez Universidad Autónoma Metropolitana Unidad Azcapotzalco Departamento de Sistemas 6 de mayo de 2015 Francisco

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 12 Algoritmos de ordenamiento, segunda parte Tenemos

Más detalles

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,

Más detalles

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I PRÁCTICA I Ejercicio 1.1 Desarrollar un programa que permita registrar los datos de un campeonato de fútbol para N equipos (valor constante). Por cada equipo debe almacenar: El nombre, la cantidad de partidos

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos Especificación de programas Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Simulacro Coloquio Final - clase 1 Sean dos programas, cada uno recibe

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Unidad 4. Arreglos y Cadenas

Unidad 4. Arreglos y Cadenas Unidad 4. Arreglos y Cadenas Definición de Arreglo: Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La propiedad indexado significa

Más detalles

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Algoritmo downsort. Upsort vs downsort

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Algoritmo downsort. Upsort vs downsort Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 8 Algoritmos de ordenamiento II Tenemos

Más detalles

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación Estructuras de datos y algoritmos Facultad de Informática curso 2008-2009 Introducción El objetivo de esta práctica consiste en

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Carnet Nombre: Examen C++ Grupo A Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Pág.1 Índice 1. INTRODUCCIÓN... 1 2. EJERCICIO 1: JUEGO DEL AHORCADO (3.5 PTS.)...1 3. EJERCICIO

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I 15. Por ahora ya sabemos lo suficiente sobre el muestreo de textos por pantalla, aunque por supuesto a falta de practicar un poco. Vamos a cambiar un poco de temática y vamos a ver otros aspectos avanzados

Más detalles

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

Más detalles

RESEÑA DE LENGUAJE C

RESEÑA DE LENGUAJE C RESEÑA DE LENGUAJE C VARIABLES La función main. Es el punto de entrada al programa. void main(void) Aquí escribo mi programa Tipos de datos. Char. El char es una variable de 1 byte. Almacena números enteros.

Más detalles

Informática I para Bachillerato

Informática I para Bachillerato CIMAT C/C++ Arreglos CIMAT Sesión 12 Un arreglo en C/C++ Un arreglo es una colección ordenada de variables del mismo tipo. Las variables que pertenecen a un arreglo se conocen por el nombre de elementos.

Más detalles

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos

Más detalles

CAPITULO II ORDENAMIENTO Y BUSQUEDA. Ivan Medrano Valencia

CAPITULO II ORDENAMIENTO Y BUSQUEDA. Ivan Medrano Valencia CAPITULO II ORDENAMIENTO Y BUSQUEDA Ivan Medrano Valencia ORDENACIÓN La ordenación o clasificación de datos (sort en inglés) es una operación consistente en disponer un conjunto estructura de datos en

Más detalles

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 ) FUNCIONES Las funciones son el medio básico de que se vale C para construir programas. Un Programa es, básicamente, una colección de funciones entre las que se incluye una especial llamada main(), la función

Más detalles

OBJETIVOS: Al finalizar el curso, el alumno habrá adquirido las habilidades necesarias y suficientes para:

OBJETIVOS: Al finalizar el curso, el alumno habrá adquirido las habilidades necesarias y suficientes para: 1 ASIGNATURA: LENGUAJE DE PROGRAMACIÓN III Cód: 31-208 Horas Semanales: 4 Horas teóricas: 15 Horas prácticas: 45 Horas totales: 60 Carrera: Sistemas Año del programa: 2016 FUNDAMENTOS: Para poder profundizar

Más detalles

Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado.

Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado. Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado. Probarlo con lo caracteres a, b, A y B 2. Hacer lo contrario, leer

Más detalles

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)

Más detalles

Introducción a la computación. Charlie

Introducción a la computación. Charlie Introducción a la computación Charlie Tipos De Dato Hasta ahora hemos aprendido a escribir programas que, valiéndose de determinados tipos de dato (int, char, float, etc.) pueden resolver problemas. Ahora

Más detalles

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento

Más detalles

Ordenamiento en Tiempo Lineal - Medianas y Ordenes sticas

Ordenamiento en Tiempo Lineal - Medianas y Ordenes sticas Ordenamiento en Tiempo Lineal - Medianas y Ordenes Estadísticas sticas CLASIFICACIÓN EN TIEMPO LINEAL. 1.- Cota Inferior para Ordenamiento por comparaciones. -árbol de decisión. - limite inferior para

Más detalles

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) APRENDERAPROGRAMAR.COM INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Complejidad de algoritmos recursivos

Complejidad de algoritmos recursivos Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.

Más detalles

PUNTEROS (Apuntadores)

PUNTEROS (Apuntadores) PUNTEROS (Apuntadores) Unidad III INTRODUCCIÓN A PUNTEROS. CONCEPTOS BÁSICOS. DECLARACIÓN DE PUNTEROS. PUNTEROS Como una colección de posiciones de memoria consecutivas. En ella se almacenan los distintos

Más detalles

Pruebas de Validez (Correctness) de Algorithmos.

Pruebas de Validez (Correctness) de Algorithmos. Pruebas de Validez (Correctness) de Algorithmos. Jonatan Gómez 11th September 2004 1 Introducción Uno de los aspectos mas importantes en el desarrollo de programas para computador es determinar cuando

Más detalles

23. Ordenación de vectores (tablas) Diego Gutiérrez

23. Ordenación de vectores (tablas) Diego Gutiérrez 23. Ordenación de vectores (tablas) 1 O cómo evitar tener que buscar una aguja en un pajar Ordenación 3 Ordenación O cómo evitar tener que buscar una aguja en un pajar Cómo buscamos una palabra en un diccionario?

Más detalles

Backtracking: Esquema General

Backtracking: Esquema General Backtracking Idea: Técnica para recorrer sistemáticamente todas las posibles configuraciones de un espacio asociado a soluciones candidatos de un problema computacional. Se puede pensar este espacio tiene

Más detalles

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN Y MEZCLA Grado en Ingeniería en Tecnologías Industriales Programación

Más detalles

Introducción a C++ y Code::Blocks

Introducción a C++ y Code::Blocks Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete

Más detalles

como les va con las practicas?

como les va con las practicas? como les va con las practicas? Problemas NP-completos y Estructuras de datos básicas (representación de datos) mat-151 1 Una maquina de Turing Aceptation state Una maquina de Turing Maquina de Turing Determinística,

Más detalles

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS 1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.

Más detalles

Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h

Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h Prácticas: Ejercicios: Conceptos: Tablas unidimensionales, vectores, cadenas, modificación,

Más detalles

Práctica 6: Diseño de un control PI

Práctica 6: Diseño de un control PI Práctica 6: Diseño de un control PI Asignación 6.1: Título de la asignación 1. Diseño de un controlador PI. Por: Ángel Sena, ID 1056208 Néstor Jiménez, ID 1044931.. Objetivos: Diseño e implementación de

Más detalles

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento Algoritmos de Ordenamiento mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 12.04 Algoritmos de ordenamiento Entrada: secuencia de números. Salida: permutación

Más detalles

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Empresa Videojuegos (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Rectangulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet CI2612: Algoritmos y Estructuras de Datos II Blai Bonet Nociones básicas Universidad Simón Boĺıvar, Caracas, Venezuela Objetivos Algoritmos Concepto de algoritmo y modelo computacional Complejidad en tiempo

Más detalles

Práctica 2 - Ejercicio 2.8

Práctica 2 - Ejercicio 2.8 Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 27 de Marzo de 2013 2.8 - Euclides 2.8. a. Escribir el algoritmo de Euclides para calcular el

Más detalles

ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA

ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA Profesora: DIANA MABEL DIAZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA

Más detalles

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

Divide & Conquer. Herman Schinca. Clase de Junio de 2011

Divide & Conquer. Herman Schinca. Clase de Junio de 2011 Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.

Más detalles

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 1. (1) Partiendo de la especificación interfaz-función de los siguientes módulos LeerDatosNIF = PROCEDIMIENTO() DEVUELVE

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias

Más detalles

Tema: Métodos de Ordenamiento. Parte 1.

Tema: Métodos de Ordenamiento. Parte 1. Programación IV. Guía No. 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 1. Objetivos Específicos Identificar la estructura de algunos algoritmos

Más detalles

ESTRUCTURAS DE DATOS Y ALGORITMOS

ESTRUCTURAS DE DATOS Y ALGORITMOS ESTRUCTURAS DE DATOS Y ALGORITMOS CURSO 2009 PRÁCTICO 8 Nota: al igual que en los prácticos 6 y 7, en los problemas que siguen se usarán los tipos lista y árbol binario, como tipos abstractos, cada uno

Más detalles

Tipos de Datos Simples Contenido del Tema

Tipos de Datos Simples Contenido del Tema T E M A 3 Tipos de Datos Simples Contenido del Tema 3.1. Concepto de Tipo 3.1.1. Elementos básicos: atributos y operaciones 3.1.2. Tipos. Concepto y necesidad 3.1.3. Operadores básicos 3.2. Tipos de Datos

Más detalles

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero Lenguaje C Tipos de variables Departamento de Electrónica Fundación San Valero Tipos de datos, Cinco tipos de datos básicos: Carácter (char): 8 bits -128 a 127. Entero (int): 32 bits -2.147.483.648 a 2.147.483.647.

Más detalles

Lectura complementaria: El método de ordenamiento de datos conocido como la burbuja.

Lectura complementaria: El método de ordenamiento de datos conocido como la burbuja. OBJETIVO: El estudiante elaborará diagramas de clases en UML que apliquen delegados MATERIAL Y EQUIPO NECESARIO: Se recomienda la utilización de software para elaborar diagramas de clases de UML como NClass,

Más detalles

Estructuras de Datos Declaraciones Tipos de Datos

Estructuras de Datos Declaraciones Tipos de Datos Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación

Más detalles

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/ DECLARACION DE ESTRUCTURAS ESTRUCTURAS La estructura es una colección de variables, la cual puede poseer distintos tipos de datos (a diferencia de los arreglos que solamente pueden tener un solo tipo de

Más detalles

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo. NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis

Más detalles

Tema 5. Entrada y Salida

Tema 5. Entrada y Salida Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I Vectores y matrices Fundamentos de Programación Fundamentos de Programación I 1 Ejemplo de utilización n de vectores: gráfico de producción En una compañía nos han encargado escribir un programita que

Más detalles

Tipos Básicos de Datos en C

Tipos Básicos de Datos en C Tipos Básicos de Datos en C Prof. Judith Barrios Albornoz Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Semestre A_2013 Este material toma

Más detalles

Cátedra I Informática Autor I Carlos Bartó

Cátedra I Informática Autor I Carlos Bartó FCEFyN Departamento de Computación Informática Examen - 07-07-2008 Apellido y Nombres: Matrícula: Carrera: PROBLEMAS: 1) Especifique en el lenguaje C++ una función denominada calc_fecha() que tenga como

Más detalles

Optimización de Problemas de Producción

Optimización de Problemas de Producción Optimización de Problemas de Producción Pedro Piñeyro - Luis Stábile Colaboran: Héctor Cancela - Antonio Mauttone - Carlos Testuri Depto. Investigación Operativa. Instituto de Computación. Facultad de

Más detalles

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Algoritmos de Búsqueda y Ordenamiento

Algoritmos de Búsqueda y Ordenamiento Departamento de Informática Universidad Técnica Federico Santa María Algoritmos de Búsqueda y Ordenamiento Programación de Computadores IWI--p Prof.: Teddy Alfaro Olave Algoritmos de Búsqueda Los procesos

Más detalles

Programación imperativa. Algoritmos y Estructuras de Datos I. Lenguaje C. Segundo cuatrimestre de 2014

Programación imperativa. Algoritmos y Estructuras de Datos I. Lenguaje C. Segundo cuatrimestre de 2014 Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 4 Modelo de cómputo: Un programa consta

Más detalles

Mientras (expresión lógica) Instrucciones a repetir mientras la expresión lógica es verdadera Fin Mientras

Mientras (expresión lógica) Instrucciones a repetir mientras la expresión lógica es verdadera Fin Mientras Clase teórica 7 Algoritmos en C Página 1 de 5 INSTRUCCIÓN WHILE Una forma más general que el FOR para realizar iteraciones es el WHILE (mientras), el cual permite repetir una serie de instrucciones mientras

Más detalles

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III Metaheurísticas y heurísticas Algoritmos y Estructuras de Datos III Metaheurísticas Heurísticas clásicas. Metaheurísticas o heurísticas modernas. Cuándo usarlas? Problemas para los cuales no se conocen

Más detalles

Para entender la recursividad primero tenemos que entender la recursividad

Para entender la recursividad primero tenemos que entender la recursividad Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre

Más detalles

Ordenamiento - Sorting - Sortin

Ordenamiento - Sorting - Sortin Ordenamiento - Sorting - Sortin Christian Russo Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 13 de Mayo de 2016 Algunas aclaraciones Este tipo de ejercicios

Más detalles

Capítulo. Técnicas de conteo Pearson Prentice Hall. All rights reserved

Capítulo. Técnicas de conteo Pearson Prentice Hall. All rights reserved Capítulo 35 Técnicas de conteo La regla de multiplicación y conteo Si una tarea consiste de una secuencia de opciones en las cuales hay p posibilidades para la primera opción, q posibilidades para la segunda

Más detalles

Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información

Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información Curso Propedéutico Introducción al Lenguaje C MC. Diego Alonso Gastélum Chavira Junio-2011 Historia

Más detalles

Tema: Matrices en C#.

Tema: Matrices en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Tema: Matrices en C#. Objetivos Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices.

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 2 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 2 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Reserva

Más detalles

06 Introducción al procesamiento de imágenes BMP con ANSI C

06 Introducción al procesamiento de imágenes BMP con ANSI C 06 Introducción al procesamiento de imágenes BMP con ANSI C Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación Introducción Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado

Más detalles

Algoritmos de Búsqueda

Algoritmos de Búsqueda Introducción a la Computación Algoritmos de Búsqueda Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/10/2017 E. Mocskos (UBA CONICET) Algoritmos de Búsqueda

Más detalles

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACION

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACION CICLO: 01/ 2015 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACION Nombre de la Practica: Lugar de Ejecución: Tiempo Estimado: MATERIA: GUIA DE LABORATORIO #05 Estructuras

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Introducción al Análisis del Coste de Algoritmos

Introducción al Análisis del Coste de Algoritmos 1/11 Introducción al Análisis del Coste de Algoritmos Josefina Sierra Santibáñez 7 de noviembre de 2017 2/11 Eficiencia de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, predecir

Más detalles

Práctica 1 El juego de los chinos

Práctica 1 El juego de los chinos Práctica 1 El juego de los chinos Fecha de entrega: 6 de diciembre Según una teoría, el conocido como juego de los chinos nació en el año 1787 en un pequeño pueblo de León. Felipe Valdeón Triguero, un

Más detalles