3trabajo de consulta-AAG8
3trabajo de consulta-AAG8
3trabajo de consulta-AAG8
Grupo 8
Hecho por:
Análisis y Algoritmos
Profesor:
Jose Daniel Avellaneda Parra
Ingeniería de Sistemas
Universidad Central
2023
Contenido
Trabajo de consulta 2
Métodos de ordenamiento 2
Quick sort 2
Radix sort 4
Shell sort 6
Heap sort 8
Merge sort 9
Referencias 12
Trabajo de consulta
Métodos de ordenamiento
Quick sort
Este método de clasificación QuickSort es actualmente el más eficiente y rápido de
los métodos de organización interna. Además, es una mejora significativa con
respecto al método de intercambio directo y se llama Ordenación rápida por la
velocidad a la que ordena los elementos de la matriz.
● Es un algoritmo basado en la técnica de divide y vencerás que permite ordenar
en promedio "n" elementos en el tiempo proporcional a "n Log n".
● El algoritmo se basa en un enfoque de partición y ordenamiento. Comienza
seleccionando un elemento, llamémoslo "x", de una posición arbitraria en un
conjunto de datos. El objetivo es posicionar "x" en su lugar correcto dentro del
conjunto, de modo que todos los elementos a su izquierda sean menores o
iguales a "x", y todos los elementos a su derecha sean mayores o iguales a "x".
● Se repite este proceso para los conjuntos de datos a la izquierda y a la derecha
de la posición correcta de "x" en el conjunto. Se reorganizan los otros
elementos de la lista en relación con el pivote, asegurando que a un lado estén
todos los elementos menores que él y al otro, los mayores. En este punto, el
pivote ocupa su posición definitiva en la lista ordenada.
Ejemplo:
Característica del algoritmo
QuickSort es un algoritmo de ordenación veloz con un tiempo promedio de ejecución
O(n log n) debido a su estrategia de partición eficiente. Al elegir un pivote y dividir
los datos en subconjuntos, logra ordenar rápidamente. Aunque en circunstancias raras
puede alcanzar O(n^2) en el peor caso, su desempeño suele ser superior a otros
algoritmos de complejidad similar, como SmoothSort o HeapSort, gracias a la
minimización de operaciones mediante su técnica de partición.
Radix sort
Ejemplo
Colas:
0:
1:
2: 12, 92
3: 33
4:
5: 25
6: 86
7: 57, 37
8: 48
9:
La lista resultante después de esta pasada es: 12 92 33 25 86 57 37 48
0:
1: 12
2: 25
3: 33, 37
4: 48
5: 57
6:
7:
8: 86
9: 92
La lista final ordenada es: 12 25 33 37 48 57 86 92
Otro ejemplo:
Shell sort
El método se llama Shell en honor a su inventor, Donald Shell. Este método es una
generalización del tipo de inserción.
● La clasificación de entradas es efectiva cuando la entrada está "casi ordenada".
● La ordenación por inserción suele ser ineficiente porque solo mueve valores en un
lugar a la vez.
El algoritmo ShellSort mejora la clasificación de entradas comparando diferentes elementos
al modo multiposición. Esto permite que el elemento dé "pasos más grandes"
a su posición esperada.
Se realizan múltiples transferencias de datos a intervalos cada vez más pequeños.
El último paso de ShellSort es una clasificación de entrada simple, pero hasta entonces
Se garantiza que los datos vectoriales están casi ordenados.
Algoritmo:
Inicio
inc = vector / 2
Repetir mientras inc > 0
Hacer inc+1
Para i = inc+1, condición i < (Número de elementos de lista), paso i+1
Hacer j = i - inc
Repetir mientras j > 0
Hacer j+1
Hacer
Si lista [j] > lista [j+inc] entonces Hacer
aux = lista [j]
lista [j] = lista [j+inc]
lista [j+inc] = aux
j = j - inc
Sino
j=0
Fin del ciclo Mientras
Fin del ciclo Para
Hacer inc = inc / 2
Fin del ciclo Mientras
1. Inicialización de inc: Se establece inc como la mitad del tamaño del vector.
Ejemplo:
Heap sort
Pseudocódigo
HEAPSORT( T[ ] A, entero n) {
BUILD_HEAP(A, n); (1)
mientras(n > 1)
{ Intercambiar(A, 0, n- 1); (2)
n--; (3)
HEAPIFY(A, 0, n); (4)
}
}
Complejidad:
El algoritmo consta de diferentes pasos. La complejidad de construir el montón inicial
(BUILD_HEAP) es O(n log n), mientras que las otras operaciones (2) y (3) tienen una
complejidad constante, u O(1). La complejidad de la operación (4) HEAPIFY es O
(log n). Dado que los pasos (2), (3) y (4) se repiten n-1 veces en el algoritmo, la
complejidad total del algoritmo es O (n log n).
Propiedades:
El primer algoritmo desarrollado entre los métodos de clasificación con complejidad
O (n log n) fue el algoritmo de clasificación in-place, que no utilizaba memoria
adicional y era inestable.
Ejemplo:
La colección dada es una pila que se puede representar como un vector. Una pila es
una estructura de datos que organiza elementos en una estructura jerárquica. Su
representación vectorial proporciona una forma eficaz de almacenar y manipular datos
y mantener una jerarquía de pila.
Merge sort
Características
● Ordenamiento estable, es decir, una vez terminado el listado, los elementos
iguales, quedan en el mismo orden que estaban inicialmente.
○ Ejemplo:
Algoritmo
Para comprender cómo funciona Merge Sort, debe comenzar con el algoritmo básico,
que consiste en mezclar conjuntos. Luego definimos las primeras reglas y luego
llegamos al algoritmo final.
Procedimiento
El procedimiento MergeSort es un algoritmo de ordenamiento que opera sobre
un arreglo lineal A, utilizando los índices Primero y Ultimo para determinar el
rango de elementos a ordenar.
La idea central del algoritmo MergeSort es dividir el arreglo en subconjuntos
más pequeños, ordenar cada subconjunto de forma individual y luego
combinarlos en un proceso conocido como fusión o merge.
El procedimiento MergeSort se define de la siguiente manera:
● Si el índice Primero es menor que el índice Ultimo, se procede con el
ordenamiento. De lo contrario, el arreglo ya está ordenado y no es necesario
hacer nada.
● Se calcula el punto medio del arreglo, obteniendo el índice medio Medio como
la suma de Primero y Ultimo dividido por 2.
● Se llama recursivamente a MergeSort para ordenar la mitad izquierda del
arreglo, utilizando los índices Primero y Medio.
● Se llama recursivamente a MergeSort para ordenar la mitad derecha del
arreglo, utilizando los índices Medio + 1 y Ultimo.
● Se fusionan (merge) los dos subarreglos ordenados obtenidos en los pasos
anteriores. Esto implica combinar de manera ordenada los elementos de ambos
subarreglos en el arreglo original.
Ejemplo:
El algoritmo MergeSort es un método de ordenación recursivo que utiliza la técnica
divide y vencerás para ordenar un array. Funciona de la siguiente manera:
public static void merge(int A[], int izq, int m, int der){
int i, j, k;
int[] B = new int[A.length]; //array auxiliar
for (i = izq; i <= der; i++) { //copia ambas mitades en el array auxiliar
B[i] = A[i];
}
i = izq;
j = m + 1;
k = izq;
while (i <= m && j <= der) { //copia el siguiente elemento más grande
if (B[i] <= B[j]) {
A[k++] = B[i++];
} else {
A[k++] = B[j++];
}
}
Este algoritmo utiliza la técnica de dividir y mezclar, que en este caso es merge, para
ordenar eficientemente un array dividiéndolo en partes más pequeñas y luego
combinándolas en orden.
Referencias
http://aniei.org.mx/paginas/uam/CursoAA/curso_aa_20.html
https://www.udb.edu.sv/udb_files/recursos_guias/informatica-ingenieria/program
acion-iv/2019/ii/guia-4.pdf
https://binarycoffee.dev/post/conociendo-el-ordenamiento-por-mezcla-merge-sor
t#google_vignette
Genbeta dev.
https://www.genbeta.com/desarrollo/implementando-el-algoritmo-quicksort
Inc. https://es.wikipedia.org/wiki/Ordenamiento_Radix
http://algoritmo-radix-sort.blogspot.com/p/home.html
http://puntocomnoesunlenguaje.blogspot.com/2014/10/java-mergesort.html
https://runestone.academy/ns/books/published/pythoned/SortSearch/ElOrdenami
entoDeShell.html