Algoritmo de Ordenamiento
Algoritmo de Ordenamiento
Algoritmo de Ordenamiento
ordenamiento
Algoritmo que pone elementos
de una lista o un vector en una
secuencia dada por una
relación de orden
Quicksort en acción sobre una lista de
números aleatorios. Las líneas
horizontales son valores pivote.
En computación y matemáticas
un algoritmo de ordenamiento
es un algoritmo que pone
elementos de una lista o un
vector en una secuencia dada
por una relación de orden, es
decir, el resultado de salida ha
de ser una permutación —o
reordenamiento— de la
entrada que satisfaga la
relación de orden dada. Las
relaciones de orden más
usadas son el orden numérico
y el orden lexicográfico.
Ordenamientos eficientes son
importantes para optimizar el
uso de otros algoritmos (como
los de búsqueda y fusión) que
requieren listas ordenadas
para una ejecución rápida.
También es útil para poner
datos en forma canónica y
para generar resultados
legibles por humanos.
Clasi�cación
Los algoritmos de
ordenamiento se pueden
clasificar en las siguientes
maneras:
Complejidad computacional
(peor caso, caso promedio y
mejor caso) en términos de
n, el tamaño de la lista o
arreglo. Para esto se usa el
concepto de orden de una
función y se usa la notación
O(n). El mejor
comportamiento para
ordenar (si no se aprovecha
la estructura de las claves)
es O(n log n). Los algoritmos
más simples son
cuadráticos, es decir O(n²).
Los algoritmos que
aprovechan la estructura de
las claves de ordenamiento
(p. ej. bucket sort) pueden
ordenar en O(kn) donde k es
el tamaño del espacio de
claves. Como dicho tamaño
es conocido a priori, se
puede decir que estos
algoritmos tienen un
desempeño lineal, es decir
O(n).
Uso de memoria y otros
recursos computacionales.
También se usa la notación
O(n).
Estabilidad
Los algoritmos de
ordenamiento estable
mantienen un relativo preorden
total. Esto significa que un
algoritmo es estable solo
cuando hay dos registros R y S
con la misma clave y con R
apareciendo antes que S en la
lista original.
Los algoritmos de
ordenamiento inestable
pueden cambiar el orden
relativo de registros con claves
iguales, pero los algoritmos
estables nunca lo hacen. Los
algoritmos inestables pueden
ser implementados
especialmente para ser
estables. Una forma de hacerlo
es extender artificialmente el
cotejamiento de claves, para
que las comparaciones entre
dos objetos con claves iguales
sean decididas usando el
orden de las entradas original.
Recordar este orden entre dos
objetos con claves iguales es
una solución poco práctica, ya
que generalmente acarrea
tener almacenamiento
adicional.
el
orden por el primer
valor es perturbado)
Lista de algoritmos de
ordenamiento
Algunos algoritmos de
ordenamiento agrupados
según estabilidad tomando en
cuenta la complejidad
computacional.
Estables
Nombre Nombre
Complejidad Memoria Método
traducido original
Ordenamiento
Bubblesort O(n²) O(1) Intercambio
de burbuja
Ordenamiento
de burbuja Cocktail sort O(n²) O(1) Intercambio
bidireccional
O(n²)("(en el
Ordenamiento Insertion
peor de los O(1) Inserción
por inserción sort
casos)")
Ordenamiento No
Bucket sort O(n) O(n)
por casilleros comparativo
Ordenamiento Counting No
O(n+k) O(n+k)
por cuentas sort comparativo
Ordenamiento
Merge sort O(n log n) O(n) Mezcla
por mezcla
Ordenamiento
Binary tree
con árbol O(n log n) O(n) Inserción
sort
binario
Pigeonhole
O(n+k) O(k)
sort
Ordenamiento No
Radix sort O(nk) O(n)
Radix comparativo
Inestables
Nombre Nombre
Complejidad Memoria Método
traducido original
Ordenamiento
Shell sort O(n1.25) O(1) Inserción
Shell
Comb sort O(n log n) O(1) Intercambio
Ordenamiento Selection
O(n²) O(1) Selección
por selección sort
Ordenamiento
Heapsort O(n log n) O(1) Selección
por montículos
Promedio: O(n
Ordenamiento log n),
Quicksort O(log n) Partición
rápido peor caso:
O(n²)
Promedio: O(n
u),
peor caso:
Several
O(n²);
Unique Sort
u=n; u =
número único
de registros
Cuestionables, imprácticos
Nombre Nombre
Complejidad Memoria Método
traducido original
O(n × n!),
Bogosort peor: no
termina
O(n), excepto
Pancake en
sorting máquinas de
Von Neumann
Promedio:
Ordenamiento
Randomsort O(n!) Peor: No
Aleatorio
termina
Referencias
1. Bubble Sort: An
archaeological algorithm
analysis . Owen Astrachan
Enlaces externos
Explicación de los distintos
métodos de ordenamiento
en Java. (pdf)
Discusión sobre varios
algoritmos de ordenación y
sus características (licencia
GFDL) (pdf)
Animación de algoritmos de
ordenamiento
Animación de algoritmos de
ordenamiento (en inglés)
ALT: Algorithm Learning
Tool. Herramienta de apoyo
a la enseñanza de
algoritmos que muestra
gráficamente su
funcionamiento. Permite
implementar algoritmos
propios y realizar una
ejecución dinámica e
interactiva
Códigos de Ordenamiento
en Python
Obtenido de
«https://es.wikipedia.org
/w/index.php?title=Algoritmo_de_or
denamiento&oldid=101731212»