










Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Una introducción a los algoritmos de búsqueda y ordenación, con un enfoque en la búsqueda secuencial y la búsqueda binaria. Además, se abordan algoritmos de inserción y diferentes métodos de ordenación, como bubblesort, inserción directa y selección directa. Se incluyen diagramas y explicaciones detalladas.
Tipo: Apuntes
1 / 18
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!











V1.1 Manuel Pereira González
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos Métodos Avanzados Medición Experimental de la Eficiencia Resumen
Importancia de Organizar la Información Ej: Buscar número de teléfono en la guía Rápido, gracias a que está ordenado alfabéticamente En informática, igual que en la vida real, frecuentemente es necesario buscar información entre mucha disponible, para lo que también se ordena. Existen diversos algoritmos para ordenar una lista de elementos y buscar dentro de una lista ordenada
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos Métodos Avanzados Medición Experimental de la Eficiencia Resumen
El array debe estar ordenado Muy eficiente: Eficiencia: O(log 2 n) El tiempo que tarda el algoritmo en ejecutarse es aproximadamente proporcional al logaritmo en base 2 de n Ejecución: Se mira el elemento del centro de la lista Si es el buscado, se devuelve Si es mayor que el buscado, se repite la búsqueda sobre la primera mitad de la lista Si es menor que el buscado, se repite la búsqueda sobre la segunda mitad de la lista Se repite el algoritmo hasta que se encuentra el elemento o se llega a una lista de longitud cero (el elemento no existe).
Estudio de la eficiencia en la peor situación: cuando el elemento no se encuentra en la lista Búsqueda Secuencial: El número de comparaciones a realizar es n Búsqueda Binaria: En cada comparación se puede eliminar la mitad de los elementos del array. Primera comparación: array de n elementos Segunda comparación: array de n/2 elementos Tercera comparación: array de n/4 elementos Cuarta comparación: array de n/8 elementos … C-ésima comparación: array de n/2C^ elementos
Necesario indicar la posición en la que se desea insertar el elemento (posición p) Hay que “abrir hueco” en la posición p, desplazando una posición a la derecha los elementos desde p hasta el final.
No es necesario indicar la posición, el elemento a insertar ocupará la posición que le corresponde según su valor
Inserción en un Array ordenado. Dos posibles situaciones: 1) Los elementos no pueden encontrarse repetidos en la lista. Se busca la posición p en la que insertar (búsqueda binaria). Si el elemento a insertar ya se encuentra en la lista, se genera un código de error, en caso contrario se inserta en la posición p. 2) Los elementos pueden repetirse. Se busca la posición p en la que insertar (búsqueda binaria) y se inserta el nuevo elemento en la posición p
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos Métodos Avanzados Medición Experimental de la Eficiencia Resumen
Insertar cada elemento, comenzando desde el segundo y hasta el final, en el lugar que le corresponde en la secuencia ordenada que se va formando a su izquierda En la primera pasada se selecciona el segundo elemento y se inserta en la secuencia ordenada formada por el primer elemento En la segunda pasada se inserta el tercer elemento en la secuencia ordenada formada por los dos primeros … Consiste en n-1 inserciones en una lista ordenada
Métodos Avanzados: Ordenación
Rápida o QuickSort
Métodos Avanzados: Ordenación
Rápida o QuickSort
Métodos Avanzados: Método del Montículo o HeapSort
Un montículo (heap) es una estructura de Árbol con información perteneciente a un conjunto ordenado. Característica de un montículo: cada nodo tiene un valor mayor que el de todos sus nodos hijos -> El nodo raiz contiene el mayor elemento. Algoritmos HeapSort: 1) Construir un montículo 2) Sacar el nodo raiz (mayor) 3) Reconstruir el montículo con los elementos restantes 4) Volver al paso 2) mientras queden elementos en el montículo
Métodos Avanzados: Método del Montículo o HeapSort
98
40 15
21 6 3 12
14
98 40 15 21 6 3 12 14
Posición del Hijo Derecho = 2 * (Posición del Padre + 1) Posición del Hijo Izquierdo = (2 * (Posición del padre Padre + 1)) - 1
Representación en Array De un Heap Binario
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos Métodos Avanzados Medición Experimental de la Eficiencia Resumen
Tiempos (en milliseg) que se han tardado experimentalmente en ordenar arrays generados aleatoriamente según todos los algoritmos estudiados
HeapSort^176290389493692720844
QuickSort^76123163212267449360
Selección 16.962 39.192 69.083 108.254 157.849 226.166 324.
Inserción 13.311 31.966 55.043 86.794 127.112 197.123 272.
Burbuja 41.924 116.538 170.098 266.772 391.321 534.290 697.
10.000 15.000 20.000 25.000 30.000 35.000 40.
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos Métodos Avanzados Medición Experimental de la Eficiencia Resumen
Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de Ordenación Métodos Directos BubbleSort Intercambios adyacentes Inserción directa Inserciones sucesivas Selección directa Buscar el menor de una sublista
Métodos Avanzados QuickSort Más rápido Divide y Vencerás HeapSort Montículo Dos fases Medición Experimental de la Eficiencia O(n2) O(n log(n))