Subido por Jafet Caamal

BaseDeDatos

Anuncio
Docente:
Jesús Antonio Santos Tejero
Actividad:
Resumen y cuadro comparativo
Integrantes:




3° A
Jafet Jesús Caamal Cocom
Luis Fernando Coboj Olivares
Johan Gerardo Chan Kumul
Jesús Abraham Couoh Caamal
ING. Sistemas Computacionales
Fecha: 25/11/2021
Introducción
El ordenamiento consiste en ordenar los registros de un archivo homogéneo
basándose en el valor de alguna llave y puede ser descendente o ascendente.
El ordenamiento es una de las aplicaciones más utilizadas en la computación
La
mayoría
de
los
datos
están
ordenados
de
alguna
manera
Muchos de los cálculos invocan internamente a un método de ordenamiento
Métodos de ordenamiento interno
Los algoritmos de ordenamiento interno son aquellos que son manejados usando
la memoria primaria, es decir la memoria de trabajo o memoria RAM.
A estos algoritmos se les conoce porque su uso es con listas simples, los datos
son de un solo tipo y se ordenan mientras se esté trabajando con la lista de forma
preliminar, es decir; usando la lista, ya sea que los datos se inserten, o que se
inicialicen.
Entre los algoritmos de ordenamiento interno tenemos:

Burbuja (Simple, Mejorada y Optimizada)

ShellSort

RadixSort (Sorteo de Raíz)

QuickSort (Sorteo Rápido)
Burbuja (Simple, Mejorada y Optimizada)
El método de la burbuja es una comparación lineal con cada uno de los
elementos, el elemento que sea menor contra el que se está comparado
intercambiaran posiciones. Este método no es recomendado para grandes
comparaciones, ya que es un proceso muy lento y requiere de una gran cantidad
de Memoria RAM.
Método de la burbuja
ShellSort
Esta forma de ordenación es muy parecida a la ordenación con burbuja. La
diferencia es que no es una comparación lineal, sino que trabaja con una
segmentación entre los datos. Por lo tanto, es un buen método, pero no el mejor
para implementarlos en grandes arreglos.
Ejemplo Gráfico
Método de Shell Se tiene el siguiente arreglo con 16 elementos:
A = {15,67,08,16,44,27,12,35,56,21,13,28,60,36 07,10}
Se parte a la mitad, quedando dos sublistas, cada una con 8 elementos,
que son los siguientes:
A1 = {15,67,08,16,44,27,12,35}
A2 = {56,21,13,28,60,36,07,10}.
Se comparan los elementos de cada sublista, donde el 1ro de la sublista A1
con el 1ro de la sublista A2 y así sucesivamente.
Por ejemplo:
15 > 56 no, se queda como estaba
67 > 21 si, se cambian de posición
08 > 13 no, se queda como estaba
16 > 28 no, se queda como estaba
44 > 60 no, se queda como estaba
27 > 36 no, se queda como estaba
12 > 07 si, se cambian de posición
35 > 10 si, se cambian de posición
Quedando el arreglo de la siguiente forma
15 21 08 16 44 27 07 10 56 67 13 28 60 36 12 35
Los números con rojo, son los que se cambiaron de posición.
Ahora se divide el arreglo que quedo en grupos de 4 en 4, quedando así 4
sublistas:
A1 = {15,21,08,16}
A2 = {44,27,07,10}
A3 = {56,67,13,28}
A4 = {60,36,12,35}
Ahora se va a comparar cada elemento de cada subsista según su posición
y el que sea el menor se cambia.
15 > 44 no
44 > 56 no
56 > 60 no, queda igual (misma posición)
21 > 27 no
27> 67 no,
67 > 36 si se cambian( el 36 por 67)
08 > 07 si, cambian,
08 > 13 no, 13>12 se cambian(12 por 13)
16 > 10 si, cambian,
16 > 28 no
28 > 35 no
Quedando el arreglo de la siguiente forma:
15 21 07 10 44 27 08 16 56 36 12 28 60 67 13 35
Ahora se divide el arreglo que queda en grupos de 2 en 2 quedando así 8
sublistas de la siguiente forma:
A1 = {15,21} A2 = {07,10} A3 = {44,27}
A4 = {08,16} A5 = {56,36} A6 = {12,28}
A7 = {60,67} A8 = {13,35}
Ahora se va a comparar cada elemento de cada sablista según su posición
y el que sea el menor se cambia.
15>07 si, cambia;
15>44 no,
44>08 si, cambia;
44>56 no,
56>12 si, cambia;
56>60 no,
60>13 si, cambia.
21>10 si, cambia;
21>27 no,
27>16 si, cambia;
27>36 no,
36>28 si, cambia;
36>67 no,
67>35 si, cambia.
Quedando el arreglo de la siguiente forma:
07 10 08 16 12 21 13 27 15 28 44 35 56 36 60 67
Ahora se comparan de uno en uno para quedar el arreglo ya propiamente
ordenado, si es mayor se cambia.
Quedando el arreglo ordenado de la siguiente forma:
07,08,10,12,13,15,16,21,27,28,35,36,44,56,60,67
Método shellsort
RadixSort (Sorteo de Raíz)
El ordenamiento radix se empieza con el dígito menos significativo y se
acomoda la lista de elementos en base en el dígito de esa posición, luego se
cambia al siguiente dígito y se vuelve a acomodar la lista en base a ese dígito y
así consecutivamente hasta hacerse con todos los dígitos.
Se cuenta con un arreglo de números desordenados y con 10 listas cada una
representando a un dígito del 0 al 9. Se establecen 2 variables r = 10 y d = 1.
Calcular el módulo del primer número de la lista entre r.
El resultado anterior lo divides entre d, al estar trabajando con enteros este
resultado se truncará y dependiendo de cuál sea este resultado se acomoda en la
lista que le corresponde.
Se hace los 2 pasos anteriores con los demás números del arreglo y se van
acomodando en las listas correspondientes detrás del último número que haya
entrado a dicha lista.
Acomodar el arreglo según como están acomodados en las listas. Cuando
se termine con todos los números del arreglo m y r se multiplican por 10. Se repiten
los
4
pasos
anteriores
hasta
que
se
evalúen
todos
los
dígitos.
Ejemplo
QuickSort (Sorteo Rápido)
El método de ordenamiento Quick Sort es actualmente el más eficiente y
veloz de los métodos de ordenación interna. Es también conocido con el nombre
del método rápido y de ordenamiento por partición, en el mundo de habla hispana.
Este método es una mejora sustancial del método de intercambio directo y
recibe el nombre de Quick Sort por la velocidad con que ordena los elementos del
arreglo. Su autor C.A. Hoare lo bautizó así.
La idea central de este algoritmo consiste en los siguiente:

Se toma un elemento x de una posición cualquiera del arreglo.

Se trata de ubicar a x en la posición correcta del arreglo, de tal forma que
todos los elementos que se encuentran a su izquierda sean menores o
iguales a x y todos los elementos que se encuentren a su derecha sean
mayores o iguales a x.

Se repiten los pasos anteriores, pero ahora para los conjuntos de datos que
se encuentran a la izquierda y a la derecha de la posición correcta de x en
el arreglo.
Metodo QuickSort
Algoritmos de ordenamiento Externos
Los algoritmos de ordenamiento externo son aquellos que para su uso utiliza
la memoria secundaria, es decir disco duro.
Estos algoritmos se usan cuando se tienen registros y/o archivos, ya que su
uso es para el manejo de datos ya sean del mismo tipo o distinto tipo y estos pueden
quedar almacenados ya ordenados.
Entre los algoritmos de ordenamiento externo se encuentran:



Intercalación
Mezcla Directa
Mezcla Natural
Método de ordenamiento Intercalación o Merge
Este método de ordenamiento existe dos archivos con llaves previamente
ordenadas con cualquier otro método de ordenamiento, los cuales se mezclan para
formar un solo archivo. Las longitudes de los archivos pueden ser diferente. El
proceso consiste en leer un registro de cada archivo y compararlos, el menor es
almacenando en el archivo de resultados y el otro se compara con el siguiente
elemento del archivo si existe. El proceso se repite hasta que alguno de los archivos
quede vacío y los elementos del otro archivo se almacenan directamente en el
archivo resultado.
Ejemplo
Método de ordenamiento Mezcla Directa
Este método de ordenamiento realiza sucesivamente una partición y una
fusión que produce secuencias ordenadas de longitud cada vez mayor. En la
primera pasada la parición es de 1 y la fusión produce secuencias de longitud 2. Las
particiones y las fusiones doblan su tamaño en cada pasada del procesamiento
hasta lograr una partición del tamaño del archivo.
Ejemplo
Método de ordenamiento Mezcla Natural
Este método, conocido también como mezcla equilibrada, es una
optimización del método de mezcla directa. La diferencia es que las particiones se
realizan en secuencias ordenadas de tamaño variable en lugar de secuencia de
tamaño fijo. La fusión de las secuencias ordenadas se realiza en dos archivos. El
proceso termina cuando el segundo archivo queda vacío en el proceso de fusiónpartición.
Ejemplo
Conclusión:
En conclusión los métodos de ordenamiento son funcionales e importantes
porque estos nos ayudan en la forma de arreglar los registros de una tabla en algún
orden secuencial de acuerdo a un criterio de ordenamiento, conocer la velocidad
del proceso de ordenamiento de cada método suele mejorar si hace uso de
recursividad, esto se nota si comparamos métodos como el inserción frente al
Quicksort , en donde inserción no hace uso de ella y su funcionamiento se basa en
ciclos.
Nos facilita las búsquedas de cantidades de registros en un moderado
tiempo, en modelo de eficiencia. Mediante sus técnicas podemos colocar listas
detrás de otras y luego ordenarlas, como también podemos comparar pares de
valores de llaves, e intercambiarlos si no se encuentran en sus posiciones correctas.
Sin embargo, entre estos, los peores algoritmos fueron inserción y Mergesort,
estos al utilizar muchos ciclos hacen que su proceso de ordenamiento sea lento y
el tiempo aumente a la misma proporción que aumenta la cantidad de datos a la
cual son expuestos, generando así un consumo mucho mayor de recursos
Hardware.
El método Radix Sort a pesar de ser un método rápido puede demorar un
poco su proceso en ciertos números de datos, ya que este ordena uno por uno los
dígitos de cada dato.
Dependiendo del orden de los valores cada método se comporta diferente y de
manera más rápida.
Cuadro comparativo
Burbuja
Método
MÉTODOS DE ORDENAMIENTO INTERNO
Funcionamiento
Ventajas
El método de la burbuja es
una comparación lineal con
cada uno de los elementos,
el elemento que sea menor
contra el que se está
comparado intercambiaran
posiciones. Este método
no es recomendado para
grandes comparaciones,
ya que es un proceso muy
lento y requiere de una
gran cantidad de Memoria
RAM.







Este método es fácil de
comprender, programar y es el más
extendido.
Es bastante sencillo
En un código reducido se realiza el
ordenamiento
Eficaz
Trabaja in situ.
Emplea operacional en promedio
para ordenar elementos.
Su bucle interno extremadamente
corto.





ShellSort

Mejora el ordenamiento
por inserción
comparando elementos
separados por un
espacio de varias
posiciones. Esto permite
que un elemento haga
“pasos más grandes”
hacia su posición
esperada.




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.


Radix

El ordenamiento radix se
empieza con el dígito
menos significativo y se
acomoda la lista de
elementos en base en el
dígito de esa posición,
luego se cambia al
siguiente dígito y se
vuelve a acomodar la
lista en base a ese dígito
y así consecutivamente
hasta hacerse con todos
los dígitos.
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
Su desventaja principal, es uno
de los menos eficientes y por
ello, normalmente, se aprende
su técnica, pero no se utiliza.
Consume bastante tiempo de
computadora
Requiere muchas
lecturas/escrituras en memoria
Es recursivo y su
implementación no recursiva es
complicada.
El desempeño es en su peor
caso.
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.
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.
QuickSort

El ordenamiento rápido
(quicksort en inglés) es un
algoritmo creado por el
científico británico en
computación C. A. R.
Hoare basado en la técnica
de divide y vencerás, que
permite, en promedio,
ordenar n elementos en un
tiempo proporcional a n log
n.




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.
Se complica la implementación
si la recursión no es posible.
Peor caso, se requiere N2
Un simple error en la
implementación puede pasar sin
detección, lo que provocaría un
rendimiento pésimo.
No es útil para aplicaciones de
entrada dinámica, donde se
requiere reordenar una lista de
elementos con nuevos valores.
Se pierde el orden relativo de
elementos idénticos.




Mezcla natural
Mezcla
directa
Intercalación
MÉTODOS DE ORDENAMIENTO EXTERNO
El proceso consiste en leer
un registro de cada archivo
y compararlos, el menor es
almacenando en el archivo
de resultado y el otro se
compara con el siguiente
elemento del archivo si
existe. El proceso se repite
hasta que alguno de los
archivos quede vacío y los
elementos del otro archivo
se almacenan
directamente
en el archivo resultado.
La idea central de este
algoritmo consiste en la
realización sucesiva de
una partición y una fusión
que produce secuencias
ordenadas de longitud
cada vez mayor.
Es una optimización del
método de mezcla directa.
La idea central de este
algoritmo consiste en
realizar las particiones
tomando secuencias
ordenadas de máxima
longitud en lugar de
secuencias de tamaño fijo
previamente determinadas.
Luego se realiza la fusión
de las secuencias
ordenadas, en alternada,
sobre dos archivos.
Aplicando estas acciones
en forma repetida se
logrará el archivo original
quede ordenado.
 Método estable de ordenamiento
mientras la operación de merge, sea
implementada correctamente.
 Algoritmo muy estable (se evita los
problemas de intercambio de claves
en la manipulación de datos).
 Algoritmo es efectivo para conjuntos
de datos que se puedan acceder
secuencialmente como arreglos,
vectores y litas ligadas.

Es muy fácil de comprender y su
ordenamiento tiene que llegar a ser
mayor o igual a los elementos
ingresados.

Es un método sumamente simple
que resulta útil cuando se tiene un
conjunto de datos pequeños.
Es fácil de adaptar la búsqueda
secuencial para que utilice una lista
enlazada ordenada, lo que hace la
búsqueda más eficaz
Si los datos buscados no estan en
orden, es el único método que
puede emplearse para hacer dicha
búsqueda.


 Está definido recursivamente y
su implementación no recursiva
emplea una pila, por lo que
requiere un espacio adicional de
memoria para almacenarla.
 No pertenece a la familia “INSITU”, ya que no utiliza el
espacio sobre el que estan
almacenados los datos, sino que
para poder funcionar requiere de
un espacio de memoria adicional
del tamaño de los datos a
ordenar en el cual se realicen las
mezclas.

Aunque es uno de los métodos
más fáciles es uno de los
métodos más tardados por las
repeticiones que tiene que hacer
hasta ordenar todo.

Este método tiende a ser muy
lento.
Si los valores de la clave no son
únicos, para encontrar todos los
elementos con una clave
particular, se requiere buscar en
todo el arreglo, lo que hace el
proceso muy largo.

Referencias
Acosta, J. A. (7 de Octubre de 2016). Estructura de Datos. Obtenido de Estructura de Datos:
https://es.slideshare.net/JosAntonioSandovalAc/estructura-de-datos-unidad-4-metodosde-ordenamiento
Salcedo, L. (15 de Agosto de 2018). Ordenamiento por Mezcla . Obtenido de Ordenamiento por
Mezcla : https://pythondiario.com/2018/08/ordenamiento-por-mezcla-merge-sort.html
Descargar