Algoritmos de ordenamientos y búsquedas en Python

Autor: Josué Bravo Quirós.

Ordenamientos:

Ordenamiento de burbuja (Bubble Sort):

Este algoritmo itera sobre la lista de datos, comparando elementos en pares hasta que los elementos más grandes “burbujean” hasta el final de la lista y los más pequeños permanecen al principio.

Comienza comparando los dos primeros elementos de la lista, si el primer elemento es mayor que el segundo, los intercambiamos, si no, se quedan como están. Luego pasamos al siguiente par de elementos, los comparamos e intercambiamos si fuera necesario. 

Tiempo de ejecución: 0.03771018981933594 segundos


Ordenamiento de selección (Selection Sort):

Este algoritmo lo que hace es tratar la parte izquierda de la lista como la parte ordenada buscando en toda la lista el elemento más pequeño y poniéndolo el primero. Después, sabiendo que ya tenemos el elemento más pequeño el primero, buscamos en toda la lista el elemento más pequeño de los restantes sin ordenar y lo intercambiamos con el siguiente ordenado y así hasta acabar con la lista. Cuantos más elementos tengamos ordenados, menos elementos tendremos que examinar.

Tiempo de ejecución: 0.015891313552856445 segundos


Tipo de inserción (Insert Sort):

Este algoritmo, al igual que la clasificación por selección, separa la lista en dos partes, ordenadas y no ordenadas. También suponemos que el primer elemento está ordenado, luego pasamos al siguiente elemento que lo vamos a llamar X, comparamos X con el primero, si es mayor, se queda como está pero si es más pequeño, copiamos el primer elemento en la segunda posición e insertamos X como primero.

Tiempo de ejecución: 0.04691147804260254 segundos


Combinar ordenación (Merge Sort):

Este algoritmo comienza dividiendo la lista en dos, luego esas dos mitades en 4 y así sucesivamente hasta que tengamos listas de un elemento de longitud. Después, estos elementos se vuelven a unir en orden. Primero fusionaremos los elementos individuales en pares de nuevo ordenándolos entre sí, luego seguiremos ordenándolos en grupos hasta que tengamos una sola lista ordenada.

Tiempo de ejecución: 0.046608 segundos


Shake Sort:

Es una variación de la ordenación Burbuja. El algoritmo de ordenación Burbuja siempre recorre los elementos desde la izquierda y mueve el elemento más grande a su posición correcta en la primera iteración y el segundo más grande en la segunda iteración y así sucesivamente. El algoritmo Shake Sort recorre un array dado en ambas direcciones alternativamente.

Tiempo de ejecución: 0.015340805053710938 segundos


Shell Sort:

El Shell Sort es una versión generalizada del algoritmo de ordenación por inserción. Primero ordena los elementos que están muy separados entre sí y reduce sucesivamente el intervalo entre los elementos a ordenar.

Tiempo de ejecución: 0.05022788047790527 segundos


Quicksort:

Una lista se divide en sublistas seleccionando un elemento pivote (elemento seleccionado de la lista). Al dividir la lista las sublistas de la izquierda y la derecha también se dividen con el misma Este proceso continúa hasta que cada sublista tiene un único elemento.

En este punto, los elementos ya están ordenados. Finalmente, los elementos se combinan para formar una lista ordenada.

Tiempo de ejecución: 0.13105154037475586 segundos


Radix:

La ordenación radix es un algoritmo de ordenación que ordena los elementos agrupando primero los dígitos individuales del mismo valor posicional. A continuación, ordena los elementos según su orden creciente/decreciente.

Supongamos que tenemos una lista de 8 elementos. Primero, ordenaremos los elementos según el valor del lugar de la unidad. Luego, ordenaremos los elementos en base al valor del décimo lugar. Este proceso continúa hasta el último lugar significativo.

Tiempo de ejecución: 0.18498969078063965 segundos


Búsquedas:

Búsqueda binaria: 

Este tipo de búsqueda es usado en listas que estén previamente ordenadas, ya que su método de búsqueda es la de dividir los datos en dos grupos, eligiendo el grupo en el cual debería estar el dato buscado (supone que está ordenado alfabéticamente o numéricamente), volviendo a aplicar la división, y así sucesivamente hasta verificar si existe o no existe el dato buscado.

Tiempo de ejecución: 0.0 segundos

Búsqueda secuencial:

Este tipo de búsqueda busca desde el primer dato hasta el último, uno a uno comparando sucesivamente todos los datos en memoria hasta localizar el dato que queramos localizar. Este algoritmo puede usarse en cualquier situación, pero se recomienda usarlo solo en listas que no estén ordenadas, ya que para las que lo estén podremos usar el siguiente algoritmo, que es mucho más eficiente.

Tiempo de ejecución: 0.0 segundos










Bibliografía:

Peña (2021), "Algoritmos de ordenación en Python". URL: https://eiposgrados.com/blog-python/tipos-de-algoritmos-de-ordenacion-en-python/

Agrawal (2022), "Cocktail Sort". URL: https://www.geeksforgeeks.org/cocktail-sort/

Anonimo (s.f), "Shell Sort". URL_ https://www.programiz.com/dsa/shell-sort

Salcedo (2017) , "Algoritmos de búsqueda en Python". URL: https://pythondiario.com/2017/10/algoritmos-de-busqueda-en-python.html

Programiz (s.f), " QuickSort Algorithm". URL:  https://www.programiz.com/dsa/quick-sort

Programiz (s.f), " Radix Sort Algorithm". URL: https://www.programiz.com/dsa/radix-sort


Comentarios