Sorting Algorithms

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]