Métodos de Ordenamiento
Métodos de Ordenamiento
Métodos de Ordenamiento
BURBUJA
Algoritmo de ordenamiento burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona
revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el
orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual
significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los
elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del
intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de
comparación, siendo el más sencillo de implementar.
El procedimiento de la burbuja consiste en ir comparando desde la casilla 0 número tras número hasta encontrar uno
mayor, si este es realmente el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por
uno mayor que él. Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector. Una de las
deficiencias del algoritmo es que ya cuando ha ordenado parte del vector vuelve a compararlo cuando esto ya no es
necesario.
Ejemplo
Selección
Algoritmo de ordenamiento por Selección (Selection Sort en inglés) consiste en encontrar el menor de todos los elementos
del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo más pequeño, y así
sucesivamente hasta ordenarlo todo. Su implementación requiere comparaciones e intercambios para ordenar una
secuencia de elementos.
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta
mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de
intercambiar los elementos sería más costosa en este caso. Su funcionamiento se puede definir de forma general como:
Buscar el mínimo elemento entre una posición i y el final de la lista.
Intercambiar el mínimo con el elemento de la posición i.
Ejemplo
Inserción
Ordenamiento por Inserción: Supóngase que se desea ordenar los siguientes claves del arreglo (A) utilizando el método de
inserción directa el cual consiste en insertar un elemento del arreglo en la parte izquierda del mismo que ya se encuentra
ordenada. Este proceso se repite desde el segundo hasta el n-esimo elemento.
Este método es una mejora sustancial del método de intercambio directo y recibe el nombre de Quick Sort, por la
velocidad con la que ordena los elementos del arreglo.
Ejemplo
QUICKSORT
Quicksort es un algoritmo 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.
El algoritmo trabaja de la siguiente forma:
Elegir un elemento del conjunto de elementos a ordenar, al que llamaremos pivote.
Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores
que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su
izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar
que le corresponderá en la lista ordenada.
La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los
elementos a su derecha.
Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez
terminado este proceso todos los elementos estarán ordenados.
Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido.
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño.
En el peor caso, el pivote termina en un extremo de la lista. El peor caso dependerá de la implementación del algoritmo,
aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del
pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que
le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.
Ejemplo
MEZCLA
El algoritmo de ordenamiento por mezcla (merge sort en inglés) es un algoritmo de ordenamiento externo estable basado
en la técnica divide y vencerás. Fue desarrollado en 1945 por John Von Neumann.
Conceptualmente, el ordenamiento por mezcla funciona de la siguiente manera:
Si la longitud de la lista es 0 o 1, entonces ya está ordenada. En otro caso:
Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.
Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla.
Mezclar las dos sublistas en una sola lista ordenada.
El ordenamiento por mezcla incorpora dos ideas principales para mejorar su tiempo de ejecución:
Una lista pequeña necesitará menos pasos para ordenarse que una lista grande.
Se necesitan menos pasos para construir una lista ordenada a partir de dos listas también ordenadas, que a partir
de dos listas desordenadas. Por ejemplo, sólo será necesario entrelazar cada lista una vez que están ordenadas.
Ejemplo