¿Qué tal algo como un procedimiento de binning? Suponga (con fines ilustrativos) que sabe que los valores están entre 1 y 1 millón. Configure N contenedores, de tamaño S. Entonces, si S = 10000, tendría 100 contenedores, correspondientes a los valores [1: 10000, 10001: 20000, ..., 990001: 1000000]
Luego, recorre los valores. En lugar de almacenar cada valor, simplemente incremente el contador en el contenedor apropiado. Usando el punto medio de cada bin como una estimación, puede hacer una aproximación razonable de la mediana. Puede escalar esto a una resolución tan fina o gruesa como desee cambiando el tamaño de los contenedores. Estás limitado solo por la cantidad de memoria que tienes.
Dado que no sabe qué tan grandes pueden llegar a ser sus valores, simplemente elija un tamaño de contenedor lo suficientemente grande como para que no se le agote la memoria, utilizando algunos cálculos rápidos al final del sobre. También puede almacenar los contenedores escasamente, de modo que solo agregue un contenedor si contiene un valor.
Editar:
El enlace que proporciona ryfm da un ejemplo de esto, con el paso adicional de usar los porcentajes acumulativos para estimar con mayor precisión el punto dentro de la papelera mediana, en lugar de solo usar puntos medios. Esta es una buena mejora.