from typing import Union


def mediana(muestra: list[Union[int, float]]) -> Union[float, int]:
    """Calcula la mediana de una muestra.

    Parameters
    ----------
    muestra
        Arreglo de datos

    Returns
    -------
    float | int
        Mediana

    """
    num_datos = len(muestra)
    muestra = sorted(muestra)
    if len(muestra) % 2 != 0:
        return muestra[(num_datos-1)//2]
    return (muestra[num_datos//2-1]+muestra[num_datos//2])/2