En este post vamos a ver distintos métodos y formas de ordenar arreglos o listas en el lenguaje de programación Python.
No vamos a ver cuál es más eficiente, solo vamos a ver los métodos nativos y los métodos manuales, aunque me parece que los métodos nativos (algoritmo Timsort) serán más rápidos y eficientes la mayoría de veces.

Nota: como en otros tutoriales de Python, en este caso me referiré a lista y arreglo como lo mismo.
Ordenar usando sort
La forma más fácil y eficiente de ordenar un arreglo en Python es usando funciones nativas. Comencemos viendo la función sort
. Esta función modifica internamente a la lista, de modo que no debemos esperar el valor de retorno.
La función ordena listas de datos primitivos como enteros, flotantes y cadenas. La sintaxis es:
lista.sort()
Te repito que la función no devuelve nada; ordena internamente al arreglo. Veamos el siguiente ejemplo:
# https://parzibyte.me/blog
nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)
# Los ordenamos. sort los ordena internamente, es decir, no regresa nada
nombres.sort()
edades.sort()
print("Nombres ordenados: ")
print(nombres)
print("Edades ordenadas: ")
print(edades)
"""
Salida:
Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Claire', 'Leon', 'Luis', 'Mario', 'María', 'Pedro']
Edades ordenadas:
[1, 2, 3, 4, 6, 6, 23]
"""
Como se puede observar en la salida, al invocar a sort
tendremos el arreglo ya ordenado. Esto no nos conviene si queremos preservar el original, pero para ello veremos una función a continuación.
Sobre sorted: ordenar y regresar arreglo
Ahora veamos la función sorted
. Esta función igualmente es nativa pero no modifica a la lista; sino que regresa el resultado. Funciona así:
# https://parzibyte.me/blog
nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)
# Los ordenamos. sorted los ordena y devuelve
nombres_ordenados = sorted(nombres)
edades_ordenadas = sorted(edades)
print("Nombres ordenados: ")
print(nombres_ordenados)
print("Edades ordenadas: ")
print(edades_ordenadas)
"""
Salida:
Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Claire', 'Leon', 'Luis', 'Mario', 'María', 'Pedro']
Edades ordenadas:
[1, 2, 3, 4, 6, 6, 23]
"""
El ordenamiento es el mismo, lo que cambia es que esta función no ordena internamente, sino que lo ordena y regresa la copia ordenada.
Otra cosa distinta es que en este caso la función no es invocada a partir del arreglo, sino que se le envía el arreglo a la función.
Orden inverso
Por defecto, la función sorted
y sort
ordenan de manera ascendente; es decir, de menor a mayor ya sea numérica o alfabéticamente. Para invertir el orden podemos pasar la opción reverse
.
Veamos el siguiente ejemplo:
# https://parzibyte.me/blog
nombres = ["Luis", "María", "Pedro", "Mario", "Leon", "Claire"]
edades = [6, 23, 6, 1, 2, 3, 4]
print("Nombres originalmente: ")
print(nombres)
print("Edades originalmente: ")
print(edades)
# Los ordenamos; uno con sort y otro con sorted para demostrar el orden inverso
nombres_ordenados = sorted(nombres, reverse=True)
edades.sort(reverse=True)
print("Nombres ordenados: ")
print(nombres_ordenados)
print("Edades ordenadas: ")
print(edades)
"""
Salida:
Nombres originalmente:
['Luis', 'María', 'Pedro', 'Mario', 'Leon', 'Claire']
Edades originalmente:
[6, 23, 6, 1, 2, 3, 4]
Nombres ordenados:
['Pedro', 'María', 'Mario', 'Luis', 'Leon', 'Claire']
Edades ordenadas:
[23, 6, 6, 4, 3, 2, 1]
"""
En este caso indicando el argumento reverse
en True
, el arreglo será ordenado de manera inversa, es decir, descendente o de mayor a menor, tanto para strings como para enteros y flotantes.
Otras funciones de ordenamiento
Hasta el momento hemos visto cómo ordenar arreglos usando sort y sorted, ya sea de enteros o cadenas y de manera ascendente o descendente.
Sin embargo la vida real es más compleja así que te dejo otros tutoriales si por ejemplo tu profesor te solicita implementar el algoritmo quicksort, burbuja, merge sort o selección. También puede que quieras ordenar un arreglo complejo, por ejemplo, uno de diccionarios.
Te dejo también más tutoriales de Python.
NO TE HACES UNA IDEA COMO ME SALVASTE DE TREMENDA FRUSTRACIÓN, TE AMO