Insertion sort
El algoritmo de ordenamiento Insertion Sort construye la lista ordenada de manera incremental: toma un elemento a la vez y lo inserta en la posición correcta respecto a los elementos previamente ordenados.
Los pasos del algoritmo se pueden definir de la siguiente manera:
- Comenzar desde el segundo elemento de la lista (suponiendo que el primer elemento ya está "ordenado").
- Comparar el elemento actual con los anteriores y desplazar hacia la derecha aquellos que sean mayores (o menores, según el criterio).
- Insertar el elemento actual en su posición adecuada.
- Repetir hasta que todos los elementos hayan sido insertados en su lugar.
Este algoritmo tiene una complejidad de O(n^2)
en el peor de los casos (cuando la lista está en orden inverso), pero en el mejor de los casos (lista ya ordenada) su complejidad es O(n)
, ya que solo realiza una comparación por elemento.
Aunque no es eficiente para listas grandes, Insertion Sort es muy útil para listas pequeñas o casi ordenadas debido a su simplicidad y bajo costo de desplazamiento de elementos.
def insertion_sort(nums):
for i in range(len(nums)):
j = i
while j > 0 and nums[j - 1] > nums[j]:
nums[j], nums[j - 1] = nums[j - 1], nums[j]
j -= 1
return nums
Este ejemplo implementa Insertion Sort de menor a mayor en una lista de números.