Logo Studenta

temav

¡Este material tiene más páginas!

Vista previa del material en texto

Universidad Dominicana O&M 
 
Nombre: 
Luis Mario Ramírez Spencer 
Matricula: 
23-EIST-6-001 
Sección: 
311 
Asignatura: 
[506310] ALGORITMOS COMPUTACIONALES 
Docente 
Felipe Arturo Durán Rodríguez 
Fecha: 
31/10/2023 
 
 
Introducción: 
En el vasto mundo de la informática y la ciencia de la computación, la gestión eficiente de datos 
es una piedra angular. Los algoritmos de búsqueda y ordenación son dos pilares fundamentales 
que permiten a los desarrolladores y científicos de datos organizar y acceder a la información de 
manera eficaz. En este trabajo de investigación, exploraremos a fondo los algoritmos de búsqueda 
y ordenación, analizando su importancia, aplicaciones y características clave. 
En un entorno digital cada vez más orientado a datos, la capacidad de buscar información 
específica y organizar datos en un orden coherente se ha convertido en una competencia esencial. 
Desde la búsqueda de un contacto en una lista de contactos hasta la clasificación de grandes 
conjuntos de datos en una base de datos, los algoritmos de búsqueda y ordenación son herramientas 
cruciales que hacen que estas tareas sean posibles y eficientes. 
En este trabajo, abordaremos los algoritmos de búsqueda, que son esenciales para encontrar 
elementos específicos en una colección de datos, ya sea una lista, una base de datos o cualquier 
otra estructura de datos. Estudiaremos algoritmos como la búsqueda lineal, la búsqueda binaria, la 
búsqueda por hash y otros, y analizaremos sus ventajas y desventajas en diferentes contextos. 
Asimismo, exploraremos los algoritmos de ordenación, que son fundamentales para organizar los 
datos de manera sistemática. La organización de datos es crucial para la presentación de resultados, 
la gestión de bases de datos y la optimización de algoritmos de búsqueda. Investigaremos 
algoritmos como la ordenación burbuja, la ordenación por inserción, la ordenación rápida y la 
ordenación por fusión, y evaluaremos cuándo y cómo utilizarlos en función de los requisitos 
específicos. 
 
 
Tema V. Algoritmos de Búsqueda y Ordenación 
Algoritmos de Búsqueda y Ordenación: 
Algoritmo de búsqueda: 
Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados 
en arreglos y registros, y por ello será necesario determinar si un arreglo contiene un valor que 
coincida con un cierto valor clave. 
El proceso de encontrar un elemento específico de un arreglo se denomina búsqueda. 
Búsqueda secuencial 
La búsqueda secuencial busca un elemento de una lista utilizando un valor destino llamado clave. 
En una búsqueda secuencial, los elementos de una lista o vector se exploran en secuencia, uno 
después de otro. La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona 
cuyo número de teléfono es 64-234567 en la guía telefónica de Osorno. Las guías de teléfonos 
están organizadas alfabéticamente por el nombre del abonado en lugar de por números de teléfono, 
de modo que deben explorarse todos los números, uno después de otro, esperando encontrar el 
número requerido. 
El algoritmo de búsqueda secuencial compara cada elemento del arreglo con la clave de búsqueda. 
Dado que el arreglo no está en un orden prefijado, es probable que el elemento a buscar pueda ser 
el primer elemento, el último elemento o cualquier otro. De promedio, al menos el programa tendrá 
que comparar la clave de búsqueda con la mitad de los elementos del arreglo. El método de 
búsqueda secuencial funcionará bien con arreglos pequeños o no ordenados. La eficiencia de la 
búsqueda secuencial es pobre, tiene complejidad lineal, O(n). 
Búsqueda Binaria 
La búsqueda secuencial se aplica a cualquier lista. Si la lista está ordenada, la búsqueda binaria 
proporciona una técnica de búsqueda mejorada. Una búsqueda binaria típica es la búsqueda de una 
palabra en un diccionario. Dada la palabra, se abre el libro cerca del principio, del centro o del 
final dependiendo de la primera letra del primer apellido o de la palabra que busca.Se puede tener 
suerte y acertar con la página correcta; pero, normalmente, no será así y se mueve el lector a la 
página anterior o posterior del libro. Por ejemplo, si la palabra comienza con «J» y se está en la 
«L» se mueve uno hacia atrás. El proceso continúa hasta que se encuentra la página buscada o 
hasta que se descubre que la palabra no está en la lista. 
Una idea similar se aplica en la búsqueda en una lista ordenada. Se sitúa la lectura en el centro de 
la lista y se comprueba si la clave coincide con el valor del elemento central. Si no se encuentra el 
valor de la clave, se sigue la búsqueda uno en la mitad inferior o superior del elemento central de 
la lista. En general, si los datos de la lista están ordenados se puede utilizar esa información para 
acortar el tiempo de búsqueda. 
 
 
Ordenamiento 
El ordenamiento o clasificación de datos (sort, en inglés) es una operación consistente en disponer 
un conjunto —estructura— de datos en algún determinado orden con respecto a uno de los campos 
de elementos del conjunto. 
Una colección de datos (estructura) puede ser almacenada en un archivo, un array (vector o matriz), 
una lista enlazada o un árbol. Cuando los datos están almacenados en un array, una lista enlazada 
o un árbol, se denomina ordenación interna. Si los datos están almacenados en un archivo, el 
proceso de ordenación se llama ordenación externa. 
Los métodos de ordenación se suelen dividir en dos grandes grupos: 
• Directos: Burbuja, selección, inserción 
• Indirectos (avanzados) : Shell, QuickSort, ordenación por mezcla, Radixsort, en el caso de 
listas pequeñas, los métodos directos se muestran eficientes, sobre todo porque los 
algoritmos son sencillos; su uso es muy frecuente. Sin embargo, en listas grandes estos 
métodos se muestran ineficaces y es preciso recurrir a los métodos avanzados. 
Ordenación quickSort: 
La idea del algoritmo es simple, se basa en la división en particiones de la lista a ordenar, por lo 
que se puede considerar que aplica la técnica divide y vencerás. El método es, posiblemente, el 
más pequeño de código, más rápido, más elegante, más interesante y eficiente de los algoritmos 
de ordenación conocidos. 
Ordenación por mezcla 
Este algoritmo consiste básicamente en dividir en partes iguales la lista de números y luego 
mezclarlos comparándolos, dejándolos ordenados. 
Si se piensa en este algoritmo recursivamente, podemos imaginar que dividirá la lista hasta tener 
un elemento en cada lista, luego lo compara con el que está a su lado y según corresponda, lo 
sitúa donde corresponde. 
Búsqueda: 
En el ámbito de Internet, una búsqueda es la acción que se lleva a cabo en un motor (que recibe 
el nombre de buscador), con el objetivo de hallar ciertos archivos o documentos que están 
alojados en servidores web. 
El usuario debe ingresar términos o frases (conocidos como palabras clave o keywords) en el 
buscador para que éste presente una página con resultados: “La búsqueda del nuevo disco fue 
infructuosa: creo que todavía no está disponible en la Web”, “Cuando me conecté para hallar el 
nombre del libro, la búsqueda arrojó decenas de resultados diferentes”. 
Si bien la búsqueda en una red informática da necesariamente con archivos de diferentes 
formatos, la experiencia que la industria intenta proporcionar al usuario evita los tecnicismos de 
manera que parezca que está explorando un gran libro, una enciclopedia de dimensiones 
incalculables que contiene las herramientas para satisfacer un gran porcentaje de las necesidades 
intelectuales de la vida actual. 
https://definicion.de/internet/
https://definicion.de/buscador/
https://definicion.de/servidor/
https://definicion.de/pagina/
https://definicion.de/herramienta/
Por más que se lo presente de forma diversa, y a pesar de las diferencias en cuanto a 
la tecnología utilizada por cada motor de búsqueda, aquellos que hayan usado ordenadorescon 
asiduidad antes del nacimiento de Internet seguramente buscaron archivos muchas veces antes de 
conocer y aprovechar los servicios de Yahoo! o Altavista, dos de los primeros buscadores en 
línea. 
Cambios a lo largo de la historia 
A lo largo de la corta pero intensa historia de Internet, las búsquedas han adquirido una gran 
importancia, a pesar de haber sido ignoradas por muchos en un principio. Cabe mencionar que a 
comienzos de los años 90 no había tantos sitios similares, y que la gente llegaba a ciertos portales 
por recomendación de sus conocidos. Pero el crecimiento de la Red hizo necesario un modo de 
explorar sus recovecos por nosotros mismos para encontrar lo que necesitamos, como si de una 
gran biblioteca se tratara. 
Google es el buscador más famoso del momento y, en gran parte, debe su éxito a la serie de 
innovaciones tecnológicas que la empresa homónima lleva incorporando año tras año. Una de 
sus características más útiles consiste en intentar adivinar qué desean buscar sus usuarios antes 
de que terminen de ingresar las palabras claves; esto lo logra gracias a la gran cantidad de 
información que recolecta constantemente, razón por la que muchos temen utilizar sus servicios. 
Es importante recordar que Google cuenta con Gmail, YouTube y Blogger, entre otras 
plataformas, y que puede monitorizar la actividad de todos sus clientes para conocerlos mejor. 
Un motor de búsqueda, también denominado buscador, es un sistema informático diseñado para 
realizar búsquedas de archivos almacenados en una base de datos a través de spiders o bots. 
Cuando el buscador recibe una consulta o query realiza una consulta en la base de datos 
ofreciendo el resultado en una página de resultados. Si son varios los resultados, se muestran 
jerarquizados en función de su importancia. 
Dada la ingente cantidad de información disponible en internet, los motores de búsqueda son una 
tecnología imprescindible hoy en día para el funcionamiento de dicha red. 
Tipos de motores de búsqueda 
Los buscadores se pueden clasificar en función del tipo de información que recogen: 
• Buscador de página web: al realizar una búsqueda devuelven como resultado la página 
web más relevante. 
• Buscador de imágenes: rastrea imágenes y muestra un mosaico de resultados relevantes. 
• Buscador de videos: analiza los videos y muestra los que se interpreta corresponden con 
la búsqueda. 
• Buscador de archivos: devuelve resultados en función del nombre o tipo de archivo. 
Cómo funcionan los motores de búsqueda 
• Independientemente del tipo de buscador, su funcionamiento es análogo en todos los 
casos. 
https://definicion.de/tecnologia/
https://definicion.de/historia/
https://definicion.de/exito/
https://www.arimetrics.com/glosario-digital/query
• Alta en la base de datos: se rastrea toda la información disponible a través de bots 
• Categorización de datos: todos los datos rastreados se categorizan en base a algoritmos de 
categorización 
• Consulta en la base de datos: se recibe una query y se realiza una búsqueda entre toda la 
información almacenada 
• Muestra de resultados: se ofrecen los resultados jerarquizados colocando el más relevante 
en primera posición 
Ejemplos de motores de búsqueda 
Entre los principales motores de búsqueda podemos encontrar los siguientes: 
• Google: creado por Larry Page y Sergei Brin en 1996, es considerado el mayor motor de 
búsqueda del mundo. 
• Bing: propiedad de Microsoft, anteriormente conocido como Live Search, Windows Live 
Search y MSN Search. 
• Yahoo: actualmente utiliza el motor de Bing en sus búsquedas. 
• Baidu: es el principal buscador chino, con más de 600 millones de usuarios. 
• Yandex: buscador de Rusia y países rusófonos. 
• DuckDuckGo: es una alternativa a los buscadores centrada en garantizar la privacidad de 
sus usuarios. 
Ordenamiento: 
Es la operación de arreglar los registros de una tabla en algún orden secuencial de acuerdo a un 
criterio de ordenamiento. 
El ordenamiento se efectúa con base en el valor de algún campo en un registro. 
El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del 
conjunto ordenado. 
Ej. de ordenamientos: Dir. telefónico, tablas de contenido, bibliotecas y 
diccionarios, 
etc. 
El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una 
secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso 
alfanumérico, ascendente o descendente. 
¿Cuándo conviene usar un método de ordenamiento? 
Cuando se requiere hacer una cantidad considerable de búsquedas y es importante el factor tiempo. 
 
Tipos de ordenamientos: 
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos. 
https://www.arimetrics.com/glosario-digital/bot
https://www.arimetrics.com/glosario-digital/google
https://www.arimetrics.com/glosario-digital/bing
https://www.arimetrics.com/glosario-digital/yahoo
https://www.arimetrics.com/glosario-digital
https://www.arimetrics.com/glosario-digital/yandex
https://www.arimetrics.com/glosario-digital/duckduckgo
https://www.monografias.com/trabajos7/regi/regi
https://www.monografias.com/trabajos14/nuevmicro/nuevmicro
https://www.monografias.com/trabajos7/regi/regi
https://www.monografias.com/trabajos10/ponency/ponency
https://www.monografias.com/trabajos12/diccienc/diccienc
https://www.monografias.com/trabajos14/dinamica-grupos/dinamica-grupos
https://www.monografias.com/trabajos11/basda/basda
https://www.monografias.com/trabajos11/metods/metods
https://www.monografias.com/trabajos901/evolucion-historica-concepciones-tiempo/evolucion-historica-concepciones-tiempo
Los internos: 
Son aquellos en los que los valores a ordenar están en memoria principal, por lo que se asume que 
el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1], a[500], etc). 
Los externos: 
Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro 
magnético, etc), por lo que se asume que el tiempo que se requiere para acceder a cualquier 
elemento depende de la última posición accesada (posición 1, posición 500, etc). 
Eficiencia en tiempo de ejecución: 
Una medida de eficiencia es: 
• Contar el # de comparaciones (C) 
• Contar el # de movimientos de items (M) 
Estos están en función del #(n) de ítems a ser ordenados. 
Un "buen algoritmo" de ordenamiento requiere de un orden nlogn comparaciones. 
La eficiencia de los algoritmos se mide por el número de comparaciones e intercambios que tienen 
que hacer, es decir, se toma n como el número de elementos que tiene el arreglo o vector a ordenar 
y se dice que un algoritmo realiza O(n2) comparaciones cuando compara n veces los n 
elementos, n x n = n2 
Algoritmo de Búsqueda: 
Un algoritmo de búsqueda es aquel que está diseñado para 
localizar un elemento con ciertas propiedades dentro de 
una estructura de datos; por ejemplo, ubicar el registro 
correspondiente a cierta persona en una base de datos, o el 
mejor movimiento en una partida de ajedrez. 
La variante más simple del problema es la búsqueda de un 
número en un vector. 
Algunos de los algoritmos de búsqueda más comunes 
incluyen: 
Búsqueda lineal: Este algoritmo recorre la colección de datos 
uno por uno hasta encontrar el elemento buscado o determinar 
que no existe. Es simple, pero puede ser ineficiente para conjuntos de datos grandes. 
Búsqueda binaria: Este algoritmo es eficiente para conjuntos de datos ordenados. Divide 
repetidamente el conjunto de datos por la mitad y compara el elemento buscado con el elemento 
en el medio, reduciendo así el espacio de búsqueda a la mitad en cada iteración. 
https://www.monografias.com/trabajos14/nuevmicro/nuevmicro
https://www.monografias.com/trabajos13/memor/memor
https://www.monografias.com/trabajos14/nuevmicro/nuevmicro
https://www.monografias.com/trabajos11/veref/veref
https://www.monografias.com/trabajos7/mafu/mafu
https://www.monografias.com/trabajos15/algoritmos/algoritmoshttps://www.monografias.com/trabajos15/algoritmos/algoritmos
El algoritmo de búsqueda binaria (o búsqueda dicotómica) es un algoritmo de búsqueda en 
vectores ordenados que permite disminuir la complejidad de la búsqueda en dichos vectores. 
La intuición detrás de la búsqueda binaria es la misma que cuando se busca en un diccionario; 
cuando se va a buscar una palabra que empieza por la letra “s», nadie comienza a leerse las palabras 
que empiezan por la “a», luego la “b», y así en adelante. Normalmente, se abre el diccionario por 
la mitad y, dependiendo de si la letra inicial por la que hemos abierto es mayor o menor que la que 
buscamos, descartamos la mitad de las palabras de la enciclopedia y ya solo buscamos en la mitad 
restante. 
El pseudocódigo del algoritmo de búsqueda binaria se puede encontrar, por ejemplo, aquí. El 
algoritmo consiste en mantener unos índices que marcan los límites superior e inferior de la parte 
del vector que nos queda por analizar. 
Búsqueda por hash: Este enfoque utiliza funciones hash para indexar y recuperar datos de manera 
rápida. Es muy eficiente para buscar en grandes conjuntos de datos cuando se utiliza una función 
hash adecuada. 
El tiempo ocupado en ordenar un arreglo y buscar un 
elemento mediante la búsqueda binaria es similar al de 
buscar secuencialmente en un arreglo desordenado, 
por lo cual se creó un método alternativo para trabajar 
con las operaciones básicas para los datos (ingresar, 
eliminar y buscar), el Hashing. Su principal 
característica es que ingresa cada elemento en un lugar 
específico determinado por el módulo de éste, por lo 
cual cada vez que se necesite buscar un elemento sólo 
bastará calcular su posición por el mismo método. 
Existen dos formas de Hashing distintas. El primero, 
llamado Hashing Cerrado, es una estructura de datos 
estática por lo cual usa un tamaño fijo para el 
almacenamiento, por lo que limita el tamaño de los 
conjuntos. El segundo, llamado Hashing Abierto, es 
una estructura de datos dinámica por lo cual no impone un límite al tamaño del conjunto. 
Búsqueda en árboles: Los árboles de búsqueda, como los árboles binarios de búsqueda o los 
árboles B, son estructuras de datos que permiten búsquedas eficientes. Estos árboles están 
organizados de manera que los elementos se almacenan en un orden específico que facilita la 
búsqueda. 
Los algoritmos de búsqueda son programas informáticos que buscan información para entregar 
una respuesta exacta. Si lo llevamos a la práctica, es cuando un usuario ingresa a un motor de 
búsqueda y escribe una palabra clave o frase, y Google le da respuestas. 
http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda
Lo que ese usuario desconoce es que para esa consulta existen millones de opciones que podrían 
sugerir una potencial respuesta. Con los algoritmos de Google, esas páginas son tomadas por el 
robot y ordenadas según una serie de “señales” informáticas. 
Además, como las búsquedas de los usuarios van evolucionando, Google también se 
actualiza. En Inside Search lo explican claramente: 
Ordenación directo: 
La "ordenación directa" se refiere a un proceso en el que los elementos de una colección de datos 
se organizan en un orden específico, generalmente ascendente o descendente, de manera secuencial 
y comparativa. Es un método simple de ordenación que se puede utilizar en situaciones en las que 
el número de elementos a ordenar es relativamente pequeño. 
Consiste en buscar el menor elemento del arreglo y colocarlo en la primera posición. Luego se 
busca el segundo elemento más pequeño del arreglo y se coloca en la segunda posición. El proceso 
continuo hasta que todos los elementos del arreglo han sido ordenados. 
 
Se basa en realizar varias pasadas, intentando encontrar en cada una de ellas el elemento que según 
el criterio de ordenación es mínimo y colocándolo posteriormente en su sitio. 
El proceso de ordenación directa generalmente sigue estos pasos: 
• Compara el primer elemento de la colección con todos los demás elementos para 
determinar su posición correcta en la secuencia ordenada. 
• Luego, compara el segundo elemento con los elementos restantes (excluyendo el primero) 
y colócalo en su posición adecuada. 
• Continúa este proceso para el tercer elemento, el cuarto, y así sucesivamente, hasta que 
todos los elementos estén ordenados. 
• El resultado es una colección de datos ordenada en un orden específico, que generalmente 
es ascendente. 
Este método se conoce a veces como "ordenación por inserción" y es especialmente útil cuando se 
tiene una colección de datos pequeña o cuando la colección ya está casi ordenada, ya que es 
eficiente en tales casos. 
Ordenación Avanzada: 
La "ordenación avanzada" se refiere a técnicas de ordenación más eficientes y sofisticadas en 
comparación con los métodos simples como la ordenación directa o la ordenación burbuja. Estos 
algoritmos avanzados están diseñados para manejar conjuntos de datos más grandes y ofrecer un 
rendimiento óptimo en términos de tiempo de ejecución. Algunos de los algoritmos de ordenación 
avanzada más comunes incluyen: 
Ordenación Rápida (Quicksort): Quicksort es uno de los algoritmos de ordenación más 
utilizados debido a su eficiencia. Divide la lista en subconjuntos más pequeños y luego reorganiza 
https://www.google.com/intl/es-419/insidesearch/howsearchworks/algorithms.html
los elementos en función de un elemento "pivot". Este proceso se repite de forma recursiva hasta 
que toda la lista esté ordenada. 
Ordenación por Fusión (Mergesort): Mergesort es un algoritmo de ordenación basado en la 
división y la combinación. Divide la lista en mitades, ordena cada mitad por separado y luego 
fusiona las mitades ordenadas para obtener la lista ordenada final. Es estable y eficiente, aunque 
requiere espacio adicional para el proceso de fusión. 
Heapsort: Heapsort utiliza una estructura de datos llamada "heap" para organizar los elementos. 
Es especialmente eficiente en términos de espacio y es una excelente opción cuando se necesita 
una ordenación en su lugar. 
Ordenación Timsort: Timsort es un algoritmo híbrido que combina elementos de Quicksort y 
Mergesort. Está diseñado para manejar eficazmente conjuntos de datos reales, incluyendo datos 
que ya están parcialmente ordenados. 
Ordenación por Conteo (Counting Sort): Counting Sort es un algoritmo adecuado para ordenar 
números enteros en un rango específico. Funciona contando la frecuencia de cada elemento y luego 
reconstruyendo la lista ordenada. 
Ordenación Radix (Radix Sort): Radix Sort es útil para ordenar números enteros o cadenas de 
texto al comparar los dígitos o caracteres en cada posición. Puede ser especialmente eficiente 
cuando se trabaja con números con un número fijo de dígitos. 
Ordenación por Burbuja Inteligente (Cocktail Shaker Sort): Es una variante mejorada del 
ordenamiento burbuja que ordena los elementos en ambos sentidos, lo que puede acelerar el 
proceso de ordenación en algunas situaciones. 
Estos algoritmos avanzados de ordenación se eligen en función de la complejidad de los datos, el 
rendimiento y los recursos disponibles. La elección del algoritmo adecuado depende de los 
requisitos específicos del proyecto. En la práctica, muchos lenguajes de programación 
proporcionan funciones de ordenación incorporadas que utilizan algoritmos avanzados para 
simplificar la ordenación de datos en programas. 
Ordenación Externa: 
Los algoritmos de ordenación externa son necesarios cuando los datos que se quiere ordenar no 
cabe en la memoria principal (RAM) de la computadora y por tal motivo se encuentran 
almacenados en un dispositivo secundario externo (el disco duro, cinta, memoria usb, etc.). La 
mayoría de estos algoritmos utilizan la técnica de divide y vencerás y la intercalación de archivos, 
para aplicar el ordenamiento. 
Los algoritmos de ordenación externa más comunes son dos: 
• Intercalación directa 
• Mezclanatural 
 
 
Intercalación Directa 
La intercalación o mezcla directas es un algoritmo de ordenación externa, que permite organizar 
los elementos de un archivo, de forma ascendente o descendente. 
La idea central de este algoritmo consiste en realizar de forma sucesiva una partición y una fusión 
que produce secuencias ordenadas de longitud cada vez mayor. En la primera pasada la partición 
es de longitud 1 y la fusión produce secuencias ordenadas de longitud 2. En la segunda pasada la 
partición es de longitud 2 y la fusión produce secuencias ordenadas de longitud 4. Este proceso se 
repite hasta que la longitud de la partición sea menor o igual al número de elementos del archivo 
original. 
Mezcla Natural 
La mezcla natural o mezcla equilibrada es un algoritmo de ordenación externa, que se encarga de 
organizar los elementos de un archivo de forma ascendente o descendente. 
La idea central de este algoritmo consiste en realizar particiones tomando secuencias ordenadas de 
máxima longitud en lugar de secuencias ordenadas de tamaño fijo previamente determinadas, 
como la intercalación directa. 
Posteriormente se realiza la fusión de esas secuencias ordenadas, alternándolas entre los dos 
archivos auxiliares. Repitiendo este proceso, se logra que el archivo quede completamente 
ordenado. 
Para aplicar este algoritmo, se necesitarán cuatro archivos. El archivo original y tres archivos 
auxiliares. De estos cuatro archivos, dos serán considerados de entrada y dos de salida, 
alternativamente en cada paso del algoritmo. 
El proceso termina cuando al finalizar un paso, el segundo archivo de salida quede vacío y el 
primero queda completamente ordenado. 
Llamamos ordenamiento externo cuando debemos ordenar archivos que son (mucho) más 
grandes de lo que nuestra memoria puede llegar a abarcar. Esto es así porque, en caso contrario, 
podríamos simplemente cargar el archivo en memoria y ordenarlo usando cualquier algoritmo de 
ordenamiento convencional. 
Supongamos entonces que contamos con un caso así. Estamos queriendo ordenar un archivo 
completamente desordenado, bajo algún criterio que no es importante. El algoritmo que 
podríamos utilizar podría hacer algo como: 
Generar k particiones ordenadas. Una partición de un archivo es un sub-archivo, donde todos 
juntos tienen todas las líneas ó registros del archivo original, sin repeticiones. Cada archivo 
tendrá ni registros (con i entre 00 y -1k−1), donde la suma de todos los ni será n, la cantidad total 
de registros del archivo original. 
Juntar las k particiones ordenadas en un nuevo archivo ordenado. Esto sería una generalización 
del intercalar ordenado de mergesort. 
En resumen, la idea es: separamos el archivo original en k particiones. Cada una de esas 
particiones nos aseguraremos de que queden ordenadas, y luego uniremos las particiones en un 
archivo final ordenado, aprovechando que las particiones quedaron ordenadas. 
Estudio conjunto de complejidades: 
El estudio conjunto de complejidades se refiere a la evaluación y comparación de los tiempos de 
ejecución y los recursos necesarios de algoritmos de búsqueda y ordenación en conjunto. Esto 
implica analizar cómo las decisiones sobre la elección de algoritmos de búsqueda y ordenación 
pueden afectar el rendimiento general de un programa o sistema. 
A continuación, se exploran algunos aspectos clave del estudio conjunto de complejidades: 
Elección de algoritmos: En el desarrollo de software, es esencial seleccionar los algoritmos 
adecuados de búsqueda y ordenación para una tarea específica. El estudio conjunto de 
complejidades implica evaluar y comparar los algoritmos disponibles en función de su eficiencia, 
teniendo en cuenta factores como el tamaño de los datos, la naturaleza de los datos y los recursos 
disponibles. 
Rendimiento general: Al combinar algoritmos de búsqueda y ordenación en un programa o 
sistema, es crucial considerar cómo interactúan. Por ejemplo, si se realiza una búsqueda frecuente 
en un conjunto de datos grande, la elección de un algoritmo de ordenación eficiente puede mejorar 
significativamente el rendimiento general, ya que reduce la complejidad de búsqueda. 
Optimización: El estudio conjunto de complejidades implica buscar oportunidades para optimizar 
el rendimiento del sistema mediante la elección adecuada de algoritmos. Esto podría incluir el uso 
de estructuras de datos específicas, como índices, para acelerar las búsquedas en conjuntos de datos 
grandes. 
Análisis de casos de uso: Cada aplicación puede tener diferentes casos de uso y requisitos. Al 
estudiar en conjunto las complejidades, es importante considerar cómo se utilizarán los algoritmos 
en el contexto real de la aplicación. Por ejemplo, un motor de búsqueda en línea necesita algoritmos 
de búsqueda y ordenación que sean eficientes en la búsqueda en grandes conjuntos de datos y en 
la presentación de resultados relevantes. 
Consumo de recursos: Los algoritmos de búsqueda y ordenación pueden variar en términos de 
consumo de recursos, como memoria y tiempo de CPU. El estudio conjunto de complejidades debe 
considerar el equilibrio entre los recursos disponibles y el rendimiento necesario. 
Escalabilidad: Algunos sistemas pueden enfrentar la necesidad de escalar para manejar grandes 
volúmenes de datos. El estudio conjunto de complejidades debe considerar cómo los algoritmos 
seleccionados funcionarán a medida que el tamaño de los datos aumente y si serán capaces de 
manejar eficazmente esa escala. 
En resumen, el estudio conjunto de complejidades es una parte fundamental de la optimización de 
algoritmos y sistemas informáticos. Implica tomar decisiones informadas sobre qué algoritmos de 
búsqueda y ordenación utilizar en función de las necesidades específicas de una aplicación y cómo 
estas decisiones afectarán el rendimiento general del sistema. Esta evaluación y optimización 
cuidadosa son esenciales para lograr un software eficiente y escalable. 
 
 
 
 
 
 
 
Conclusión: 
En conclusión, los algoritmos de búsqueda y ordenación son elementos esenciales en la ciencia de 
la computación y la programación que tienen un impacto significativo en la eficiencia y el 
rendimiento de sistemas informáticos. Estos algoritmos son fundamentales para organizar datos de 
manera coherente y buscar información específica en grandes conjuntos de datos. A través de este 
estudio, hemos comprendido la importancia de estos dos conceptos y cómo influyen en el 
funcionamiento de las aplicaciones y sistemas. A continuación, se presentan algunas conclusiones 
clave: 
Organización de Datos: Los algoritmos de ordenación desempeñan un papel crucial en la 
organización de datos. La elección de un algoritmo de ordenación adecuado depende del tamaño 
de los datos, la naturaleza de los datos y los recursos disponibles. La capacidad de ordenar datos 
de manera eficiente es esencial para optimizar la búsqueda y presentación de información. 
Eficiencia en la Búsqueda: Los algoritmos de búsqueda son esenciales para encontrar información 
específica en grandes conjuntos de datos. La elección del algoritmo de búsqueda correcto puede 
marcar la diferencia en términos de tiempo de respuesta y recursos utilizados. Algunos algoritmos, 
como la búsqueda binaria, son ideales para conjuntos de datos ordenados, mientras que otros, como 
la búsqueda por hash, son eficientes en contextos específicos. 
Aplicaciones Reales: Los algoritmos de búsqueda y ordenación son ampliamente utilizados en 
aplicaciones del mundo real. Desde motores de búsqueda en línea hasta sistemas de gestión de 
bases de datos y algoritmos de recomendación, estos algoritmos son componentes críticos en la 
tecnología moderna. 
Optimización: La elección y la implementación adecuada de algoritmos de búsqueda y ordenación 
pueden conducir a mejoras significativas en el rendimiento de un sistema. La optimización se logra 
al comprender las complejidades de estosalgoritmos y cómo se pueden adaptar a las necesidades 
específicas de un proyecto. 
Estudio Conjunto de Complejidades: Evaluar y comparar algoritmos en conjunto es esencial para 
tomar decisiones informadas sobre qué algoritmo utilizar en una aplicación. La interacción entre 
algoritmos de búsqueda y ordenación puede afectar el rendimiento general de un sistema, y es 
fundamental considerar el uso de recursos y la escalabilidad. 
En última instancia, los algoritmos de búsqueda y ordenación son herramientas poderosas que 
permiten a los desarrolladores y científicos de datos administrar y acceder a datos de manera 
eficiente. Comprender la selección y aplicación adecuada de estos algoritmos es esencial para el 
desarrollo de software eficiente y escalable, lo que tiene un impacto directo en la experiencia del 
usuario y en la eficacia de las aplicaciones y sistemas informáticos. 
 
 
Blibliografía: 
• https://medium.com/@mise/algoritmos-de-b%C3%BAsqueda-y-ordenamiento-
7116bcea03d0 
• https://jorgeantilefblog.wordpress.com/algoritmos-de-busqueda-y-ordenamiento/ 
• https://www.arimetrics.com/glosario-digital/motor-de-busqueda 
• http://lwh.free.fr/pages/algo/tri/tri_es.htm 
• https://www.monografias.com/trabajos/algordenam/algordenam 
• https://jahazielponce.com/algoritmos-de-busqueda/ 
• http://cidecame.uaeh.edu.mx/lcc/mapa/proyecto/libro9/algoritmos_de_bsqueda.html 
• https://algoritmos-rw.github.io/algo2/material/apuntes/ordenamientos_externos/ 
• https://prezi.com/k6dsv1euljmx/algoritmos-de-ordenacion-externa/ 
• https://www.europeanvalley.es/noticias/la-complejidad-de-los-algoritmos/

Continuar navegando

Materiales relacionados

557 pag.
120 pag.
EstructurasDatos - Manuela Cruz

User badge image

Desafio PASSEI DIRETO

77 pag.
DocsTec-3212

ITESM

User badge image

Todo para Aprender