Algoritmos de Ordenamiento

Selection Sort (Selección) Paso a Paso

Búsqueda del mínimo, intercambios mínimos (N-1) en C, Java, JavaScript y Python.

SLIDE 1 / 6

1. Mecánica de Selección del Mínimo

Selection Sort divide la lista en dos partes: la sublista ordenada y la desordenada. En cada paso busca el elemento mínimo de la parte desordenada y lo intercambia con la primera posición disponible.

ANÁLISIS ALGORÍTMICO
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. Inspector de Selección de Mínimo

Array: [29, 10, 14]
Busca mínimo ➔ 10 (pos 1) ➔ Swap con pos 0 ➔ [10, 29, 14]