Insertion Sort (Inserción) Paso a Paso
Inserción adaptativa, listas semi-ordenadas y O(N) mejor caso en C, Java, JavaScript y Python.
SLIDE 1 / 6
1. Mecánica de Inserción Adaptativa
Insertion Sort funciona de forma similar a ordenar cartas en la mano: toma un elemento y lo desplaza hacia la izquierda hasta insertarlo en su posición correcta.
ANÁLISIS ALGORÍTMICO
Mejor Caso (Array Casi Ordenado)O(N) lineal
Peor Caso (Invertido)O(N²)
EstabilidadEstable (preserva orden)
2. C: Insertion Sort
Ideal para conjuntos pequeños de datos o vectores casi ordenados.
insertion.c
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
} 3. Java: Insertion Sort
Utilizado internamente como subrutina en algoritmos híbridos de ordenamiento (Timsort / Dual-Pivot Quicksort) para particiones pequeñas.
InsertionSort.java
public static void insertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j]; j--;
}
arr[j + 1] = key;
}
} 4. JavaScript: Insertion Sort
Procesamiento eficiente de desplazamiento de claves mediante bucle `while`.
insertion.js
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr;
} 5. Python: Insertion Sort
Sintaxis directa con bucle `while` decrementando el índice `j`.
insertion.py
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr 6. Inspector de Inserción de Clave
Array: [12, 11, 13]
Clave key=11 ➔ Desplaza 12 a pos 1 ➔ Inserta 11 en pos 0 ➔ [11, 12, 13]
Navegación: Flechas Izq / Der