// Sesión 2. merge y sort_range son las dos partes; merge_sort reserva la memoria auxiliar.
#include <stdlib.h>

#include "merge_sort.h"

// Mezcla a[0..mid) y a[mid..n), que ya están ordenados, y deja el resultado en a.
// Usa scratch, que tiene espacio para n elementos. Aquí sí se puede usar un ciclo.
static void merge(int *a, size_t mid, size_t n, int *scratch) {
    (void) a;
    (void) mid;
    (void) n;
    (void) scratch;
}

// Ordena los n elementos de a. No reserva memoria: usa siempre el mismo scratch.
static void sort_range(int *a, size_t n, int *scratch) {
    (void) a;
    (void) n;
    (void) scratch;
    (void) merge;
}

int merge_sort(int *a, size_t n) {
    (void) a;
    (void) n;
    (void) sort_range;
    return 0;
}
