Algoritmos de ordenamiento en Python

Algoritmos de ordenamiento en Python: bubble sort, selection sort y más (con código)

Si ya sabés qué es un algoritmo pero todavía no entendés cómo funciona el ordenamiento por detrás, este post es para vos. Los algoritmos de ordenamiento en Python son uno de los temas que más aparecen en entrevistas técnicas y en ejercicios de práctica — no porque los uses todo el tiempo en el trabajo,…

Si ya sabés qué es un algoritmo pero todavía no entendés cómo funciona el ordenamiento por detrás, este post es para vos. Los algoritmos de ordenamiento en Python son uno de los temas que más aparecen en entrevistas técnicas y en ejercicios de práctica — no porque los uses todo el tiempo en el trabajo, sino porque entenderlos muestra cómo pensás como programador.

Vamos con los tres más importantes para empezar, con código real.

→ Si todavía estás conociendo los algoritmos desde cero, te recomiendo arrancar con 7 algoritmos infalibles que todo nuevo programador debería dominar.


Qué son los algoritmos de ordenamiento en Python

Un algoritmo de ordenamiento en Python es un procedimiento paso a paso para reorganizar los elementos de una lista en un orden determinado — generalmente de menor a mayor.

En Python podés ordenar una lista así:

python

numeros = [5, 2, 8, 1, 9]
print(sorted(numeros))  # [1, 2, 5, 8, 9]

Pero sorted() esconde todo lo que pasa por detrás. Entender los algoritmos de ordenamiento en Python te ayuda a comprender por qué algunas soluciones son más eficientes que otras — y eso es exactamente lo que evalúan en una entrevista.


Bubble Sort: el algoritmo de ordenamiento más simple de entender

Bubble sort compara elementos de a dos y los intercambia si están en el orden incorrecto. Repite ese proceso hasta que la lista queda ordenada. Se llama «bubble» porque los valores más grandes «suben» hacia el final en cada pasada.

python

def bubble_sort(lista):
    n = len(lista)
    for i in range(n):
        for j in range(0, n - i - 1):
            if lista[j] > lista[j + 1]:
                lista[j], lista[j + 1] = lista[j + 1], lista[j]
    return lista

numeros = [5, 2, 8, 1, 9]
print(bubble_sort(numeros))  # [1, 2, 5, 8, 9]

Cuándo usarlo: casi nunca en producción — es lento para listas grandes. Pero es el primero que tenés que entender porque la lógica es muy clara.

Complejidad: O(n²) en el peor caso.


Selection Sort en Python: elegir el mínimo una y otra vez

Selection sort busca el elemento más pequeño de la lista y lo pone en la primera posición. Después busca el siguiente más pequeño y lo pone en el segundo lugar. Y así hasta terminar.

python

def selection_sort(lista):
    n = len(lista)
    for i in range(n):
        min_idx = i
        for j in range(i + 1, n):
            if lista[j] < lista[min_idx]:
                min_idx = j
        lista[i], lista[min_idx] = lista[min_idx], lista[i]
    return lista

numeros = [5, 2, 8, 1, 9]
print(selection_sort(numeros))  # [1, 2, 5, 8, 9]

La diferencia con bubble sort: selection sort hace menos intercambios. Eso puede ser ventaja cuando mover elementos es costoso.

Complejidad: O(n²), pero con menos swaps que bubble sort.


Insertion Sort en Python: como ordenar cartas en la mano

Insertion sort toma cada elemento y lo inserta en la posición correcta dentro de la parte ya ordenada de la lista. Es exactamente lo que hacés cuando ordenás cartas.

python

def insertion_sort(lista):
    for i in range(1, len(lista)):
        clave = lista[i]
        j = i - 1
        while j >= 0 and lista[j] > clave:
            lista[j + 1] = lista[j]
            j -= 1
        lista[j + 1] = clave
    return lista

numeros = [5, 2, 8, 1, 9]
print(insertion_sort(numeros))  # [1, 2, 5, 8, 9]

Cuándo brilla: con listas pequeñas o casi ordenadas, insertion sort es más eficiente que bubble y selection.

Complejidad: O(n²) en el peor caso, O(n) en el mejor (lista ya ordenada).


Comparativa de algoritmos de ordenamiento en Python

AlgoritmoComplejidadIntercambiosMejor para
Bubble SortO(n²)MuchosAprender la lógica básica
Selection SortO(n²)PocosListas donde mover datos es costoso
Insertion SortO(n²)MediosListas pequeñas o casi ordenadas

En producción real, Python usa Timsort (combinación de merge sort e insertion sort) con complejidad O(n log n). Pero para entender por qué eso importa, primero tenés que entender estos tres.

Si querés profundizar en el análisis de eficiencia, leé también algoritmos básicos: fundamentos que todo principiante debe dominar.


Practicá esto en el campus

Si querés afianzar lo que aprendiste acá, en el campus de Academia MC tenés ejercicios y desafíos de código para practicar algoritmos de ordenamiento en Python desde cero — con corrección y comunidad. Es gratis. Entrá en campus.marianacasella.com y empezá hoy.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Portada » Blog » Algoritmos de ordenamiento en Python: bubble sort, selection sort y más (con código)

Tal vez esto te interese…