Selection Sort Step by Step
Minimum element lookup, minimal swaps (N-1) in C, Java, JS, and Python.
SLIDE 1 / 6
1. Minimum Selection Mechanics
Selection Sort divides the list into sorted and unsorted sublists. In each step it finds the minimum in the unsorted part and swaps it to the front.
ALGORITHMIC ANALYSIS
ComparacionesO(N²) siempre
Intercambios (Swaps)O(N) máximo (exactamente N-1)
2. C: Selection Sort
Ideal cuando el costo de escritura en memoria/flash es alto, ya que realiza como máximo `N-1` escrituras.
selection.c
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
int temp = arr[minIdx];
arr[minIdx] = arr[i];
arr[i] = temp;
}
} 3. Java: Selección con Búsqueda de Mínimo
Mantiene `minIdx` actualizado durante el bucle interno antes de llamar a la rutina de swap.
SelectionSort.java
public static void sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) min = j;
}
int t = arr[min]; arr[min] = arr[i]; arr[i] = t;
}
} 4. JavaScript: Selection Sort
Implemetación directa en JS manteniendo legibilidad en el seguimiento de índices.
selection.js
function selectionSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
let min = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) min = j;
}
if (min !== i) [arr[i], arr[min]] = [arr[min], arr[i]];
}
return arr;
} 5. Python: Selection Sort
En Python el ordenamiento in-place por selección reduce las escrituras en la estructura.
selection.py
def selection_sort(arr):
n = len(arr)
for i in range(n - 1):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr 6. Minimum Inspector
Array: [29, 10, 14]
Busca mínimo ➔ 10 (pos 1) ➔ Swap con pos 0 ➔ [10, 29, 14]
Navigation: Left / Right Arrows