













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
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
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
Descubre las mejores universidades de tu país según los usuarios de Docsity
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
algoritmos de ordenamiento y búsqueda
Tipo: Guías, Proyectos, Investigaciones
1 / 21
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Nombre: Leonardo Antonio Laija Salomón Maestra: Elizabeth Ceceña Niebla Semestre: Ago-Dic 2020 Horario: 09:00-10: Fecha de entrega: 29 de noviembre de 2020
5. Métodos de ordenamiento 5.1. Algoritmos de ordenamiento internos. 5.1.1. Burbuja. 5.1.2. Quicksort. 5.1.3. ShellSort. 5.1.4. Radix. 5.2. Algoritmos de ordenamiento externos. 5.2.1. Intercalación. 5.2.2. Mezcla Directa. 5.2.3. Mezcla Natural 6. 6. Métodos de búsqueda 6.1. Búsqueda secuencial. 6.2. Búsqueda binaria. 6.3. Búsqueda por funciones de HASH
=1694 Operaciones = O(1) Prueba de escritorio Para mi prueba de escritorio adjunté un método nuevo a la clase burbuja llamado mostrar y lo agregué al final de cada ciclo for interno para obtener los datos precisos: Con el cual obtuve los siguientes resultados:
Código y definición
El método de ordenación Quicksort fue desarrollado por Hoare en el año 1960. Es el algoritmo de ordenación más rápido. Se basa en la técnica divide y vencerás, que consiste en ir subdividiendo el array en arrays más pequeños, y ordenar éstos. Para hacer esta división, se toma un valor del array como pivote, y se mueven todos los elementos menores que este pivote a su izquierda, y los mayores a su derecha. Después de elegir el pivote se realizan dos búsquedas: Una de izquierda a derecha, buscando un elemento mayor que el pivote Otra de derecha a izquierda, buscando un elemento menor que el pivote. Cuando se han encontrado los dos elementos anteriores, se intercambian, y se sigue realizando la búsqueda hasta que las dos búsquedas se encuentran. La implementación del método de ordenación Quicksort es claramente recursiva. Ventajas: Requiere de pocos recursos en comparación a otros métodos de ordenamiento. En la mayoría de los casos, se requiere aproximadamente N log N operaciones. Ciclo interno es extremadamente corto. No se requiere de espacio adicional durante ejecución (in-place processing).
Con el cual obtuve los siguientes resultados:
Código y definición
Es una mejora del método de inserción directa, utilizado cuando el array tiene un gran número de elementos. Cualquier algoritmo de ordenación que intercambia elementos adyacentes (como los algoritmos burbuja, selección o inserción) tiene un tiempo promedio de ejecución de orden cuadrático (n2). El método Shell mejora este tiempo comparando cada elemento con el que está a un cierto número de posiciones llamado salto, en lugar de compararlo con el el que está justo a su lado. Este salto es constante, y su valor inicial es N/2 (siendo N el número de elementos, y siendo división entera). Ventajas: Es un algoritmo muy simple teniendo un tiempo de ejecución aceptable. Es uno de los algoritmos más rápidos. No requiere memoria adicional Fácil implementación. Desventajas: Su complejidad es difícil de calcular y depende mucho de la secuencia de incrementos que utilice. Shell Sort es un algoritmo no estable porque se puede perder el orden relativo inicial con facilidad. Es menos eficiente que los métodos Merge, Heap y Quick Sort. Realiza numerosas comparaciones e intercambios.
Este método se basa en la clasificación de los datos que queremos ordenar por medio de una clave, esta clave debe ser una característica de cada dato que pueda ser descompuesta en elementos mas pequeños y que permita clasificar los elementos ordenándolos poco a poco. Ventajas: Radix Sort es estable, preservando la orden de elementos iguales.
Radix Sort funciona en un tiempo lineal, en comparación de varios otros métodos de ordenamiento. El tiempo de ordenar cada elemento es constante, ya que no se hacen comparaciones entre elementos. Radix Sort es particularmente eficiente cuando se tratan con grandes grupos de números cortos. Desventajas: Radix Sort no funciona tan bien cuando los números son muy largos, ya que el total de tiempo es proporcional a la longitud del número más grande y al número de elementos a ordenar. Eficiencia Análisis de eficiencia
Código y definición
Lo que hace el algoritmo es unir ambos arreglos en uno solo y ordenarlos intercalando:
Código y definición
El ordenamiento por mezcla es un algoritmo recursivo que divide continuamente una lista por la mitad. Si la lista está vacía o tiene un solo ítem, se ordena por definición (el caso base). Si la lista tiene más de un ítem, dividimos la lista e invocamos recursivamente un ordenamiento por mezcla para ambas mitades. Ventajas: Método de ordenamiento estable mientras la función de mezcla sea implementada correctamente.
Este método, conocido también como mezcla equilibrada es una optimización del método de mezcla directa. La idea central de este método consiste en realizar las particiones tomando secuencias ordenadas de máxima longitud en lugar de secuencias de tamaño fijo previamente determinadas. Luego realiza la fusión de las secuencias ordenadas, alternativamente sobre 2 archivos aplicando acciones de forma repetida para que el archivo original se ordene. Ventajas: Mejora la complejidad de la mezcla directa para vectores inicialmente ordenados. Se comporta como mezcla directa al aprovechar la fusión de tramos Desventajas: Es mucha mas lenta que la mezcla directa Eficiencia Tiene una eficiencia de O(n²) en general lo que la hace muy lenta Prueba de escritorio
Para esta prueba mas sencilla se utilizó el mismo arreglo que todas las demás, pero esta vez se mezcló de forma natural por lo que tomo solo 2 iteraciones ya que el arreglo está algo ordenado.
Algoritmo Ventajas Desventajas Eficiencia Sencillez Burbuja -Es fácil de -Muchas O(1) Es realmente
implementar -Eficaz lecturas -Mucha memoria muy sencillo de crear y usar Quicksort -Es muy rápido -Pocos recursos -A veces se hace O(n²) -No sirve para dinámicos O(n log n) Es algo mas complejo que el de burbuja, pero realmente rápido Shellsort -Fácil implementación -No requiere más memoria -Es menos rápido -Es más difícil calcular su complejidad O(n2/3) Es algo complicado de entender el funcionamiento, pero el código es fácil de hacer Radix -Tiempo de ordenamiento constante -Es estable -No sirve con números muy grandes -Es algo complejo de entender O(k*n) Es bastante complicado de entender, es un método que utiliza el valor de integer y es complicado de crear el Código Intercalación -Es rápido -Sencillo de implementar -No ordena las sub-listas -Se tiene que apoyar en otro método interno O(1) Es muy fácil de entender, pero es algo inútil que se apoye en el método de burbuja Mezcla directa -Estable -Efectivo -Recursivo O(1) Es algo complicado de entender, pero es bastante efectivo Mezcla natural -Aprovecha fusión de tramos -Es muy lento O(n²) Este se es una mejora del directo y es mas lento Búsqueda Secuencial -Es muy sencilla de implementar -Es el único que puede buscar en listas no ordenadas -Consume mucha memoria -Para buscar mas valores iguales se tiene que buscar en todo el arreglo O(n) Este método es el mas sencillo y compacto, funciona con cualquier arreglo, pero es algo lento y cuanto más