Algoritmos de Ordenamiento y Complejidad

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Unidad 6 Métodos de Ordenamiento Internos
Método de ordenación por inserción
Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
Unidad 8 Métodos de Búsqueda
Complejidad de Algoritmos
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
ALGORITMOS DE ORDENAMIENTO
¿ Que es la complejidad de un algoritmo ?
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Unidad 4: Análisis de algoritmos (parte II)
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
Algoritmos de Búsqueda
ALGORITMOS 2 DIGITALES II
Medición y rendimientos de Algoritmos
Algoritmos de ordenación
UNIVERSIDAD AUTONOMA METROPOLITANA
Material de apoyo Unidad 8 Estructura de datos
Unidad II Aplicaciones con Arreglos en Java y C++
M.C. Yalu Galicia Hdez. (FCC/BUAP)
Complejidad Programación II de febrero de 2009.
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,

Análisis de Algoritmos
Algoritmos para Ordenar datos
Introducción al análisis de algoritmos
Algoritmos.
Tema 8b Búsqueda y ordenación en arreglos. Ordenación Es un proceso que altera el orden de los elementos de un conjunto. Tiene asociada una relación de.
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Estructuras de Datos Arreglos.
Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
Clase 10: Estructuras de datos y arreglos.
Algoritmos de búsqueda
Sistemas decimal, binario, octal y hexadecimal
Tablas de Hash.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
Búsqueda y ordenación Programación II 7-8 de enero de 2009.
Divide y vencerás 1. Método general.
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.
Capítulo 7 Gestión de memoria.
Arreglos Programación I MC Beatriz Beltrán Martínez.
1. Desarrollo de Programas iterativos usando invariante
Operaciones con números complejos
Análisis y Diseño de Algoritmos
1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Análisis de algoritmos Generalidades
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Ordenamiento en lenguaje c
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Diseño y análisis de algoritmos Análisis de Algoritmos II.
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Introducción a los TADs
Computación I. CI-2125 Tema VII
ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández

“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
2. Arreglos e invariantes. Arreglos Un arreglo es una coleccion ordenada de elementos del mismo tipo – Tipos de datos primitivos (int, …) – Referencias.
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.
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
Ingeniería en Sistemas
Transcripción de la presentación:

Algoritmos de Ordenamiento y Complejidad Adaptación Programación Avanzada Prim. 2009

Índice Complejidad Computacional Algoritmos de Ordenamiento simples Burbuja Inserción Selección Algoritmos de Ordenamiento complejos Quick Sort Heap Sort Shell Sort

Complejidad Computacional Definición: Mide la eficiencia de un algoritmo en términos de tiempo o espacio requeridos. El Tiempo tiende a ser más importante. La eficiencia de un algoritmo siempre se establece como una función del tamaño de la entrada. La notación “Big-O” o O(f(n)) Escenario del peor caso El máximo número de pasos computacionales tomados en cualquier entrada de tamaño n. La estratégia es encontrar el límite superior más cercano al escenario del peor caso. Upper bound Actual function Lower bound

Complejidad del Tiempo Asumimos que cada operación en un programa, toma una unidad de tiempo. Unidades de Tiempo para calcular ------------------------------- 1 por la asignación. 1 asignamiento, n+1 pruebas, y n incrementos. n iteraciones de 3 unidades por un asignamiento, una suma, y una multiplicación. 1 por la sentencia return. ---------------------------------------- Total: 1+(1+n+1+n)+3n+1 = 5n+4 = O(n) int sum (int n) { int partial_sum = 0; for (int i = 1; i <= n; i++) partial_sum = partial_sum + (i * i ); return partial_sum; }

Funciones Básicas de la Complejidad del Tiempo En un orden creciente de complejidad: Tiempo Constante : O(1) Tiempo Logarítmico : O(logn) Tiempo Lineal : O(n) Tiempo Polinomial : O(n2) Tiempo Exponencial : O(2n) Supóngase que cada paso toma 1 microsegundo (10-6):

Funciones Básicas de la Complejidad del Tiempo

Burbuja (Bubble Sort) El ordenamiento toma una colección desordenada y la ordena. Algoritmo: Bubble Sort : Compara elementos adyacentes. Si el primero es mayor que el segundo, intercámbialos. Realizar esto para cada par de elementos adyacentes, iniciando con los primeros dos y terminando con los dos últimos. En este punto, el último elemento debería ser el mayor de todos. Repite estos paso para todos los elementos, excepto el último. Continua la repetición con un elemento menor cada vez, hasta que no tengas más pares que comparar. Complejidad del algorítmo : O(n2) Demo: http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/ Ejemplo: Ordena la lista {12, 5, 7, 9, 2, 6}

Inserción (InsertionSort) Algoritmo*: Inicia con el primer elemento de la entrada Itera sobre el arreglo de entrada hasta que esté vacío, “eliminando” el elemento restante de más a la izquierda. Compara el elemento removido con el elemento actual,iniciando desde el elemento más alto, y comparando hacia la izquierda, hasta el elemento menor Si el elemento de entrada eliminado es menor que el elemento actual, copia el valor a un temporal para hacer espacio al nuevo elemento menor y repite esto con cada elemento que resulte menor. De otra forma, el nuevo elemento esta en la posición correcta; almancénalo en la localidad a la izquierda e inicia nuevamente desde el paso 2 con el siguiente elemento de entrada. Complejidad: O(n2) Demo: http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/ Ejemplo: Ordena la lista {12, 5, 7, 9, 2, 6}

Selección Directa (SelectionSort) Algoritmo: Recorre los elementos secuencialmente En el i-ésimo paso, seleccionamos el elemento con el valor menor desde A[i] hasta A[n], luego intercambiamos el valor menor con A[i]. Complejidad: O(n2) Demo: http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/ Ejemplo: Ordena la lista {25, 57, 48, 37, 12}

QuickSort Quick Sort, tambien conocido como ordenamiento por partición, ordena empleando la estratégia divide y venceras. Algoritmo: Selecciona un elemento pivote de la entrada. En todas las particiones los elementos menores que el pivote se colocan a la izquierda de éste y los elementos mayores que el pivote se colocan a la derecha de éste (para valores iguales, éstos pueder ir en cualquier lado). Ordena recursivamente la lista de elementos antes del pivote y la lista de elementos después del pivote. La recursión termina cuando la lista contiene cero o un solo elemento. Time complexity: O(nlogn) or O(n2) Demo: http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/ Example: Ordena la lista {25, 57, 48, 37, 12}

Búsqueda Demos y Código Fuente: http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/search/

¿Preguntas?