Sleep Sort es un algoritmo de clasificación de enteros que encontré en Internet. Abre una secuencia de salida y, para cada número de entrada en paralelo, demora los segundos y emite ese número. Debido a los retrasos, el número más alto se emitirá en último lugar. Estimo que tiene O (n + m), donde n es el número de elementos ym es el número más alto.
Aquí está el código original en Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Aquí está el pseudocódigo
sleepsort(xs)
output = []
fork
for parallel x in xs:
sleep for x seconds
append x to output
wait until length(output) == length(xs)
return output
Su tarea es implementar Sleep Sort como una función en el lenguaje de programación que elija. Puede descuidar cualquier factor de concurrencia, como las condiciones de la carrera, y nunca bloquear los recursos compartidos. El código más corto gana. La definición de la función cuenta para la longitud del código.
La lista de entrada se limita solo a enteros no negativos, y se espera que la longitud de la lista de entrada sea razonablemente larga (pruebe al menos 10 números) para que las condiciones de carrera nunca ocurran. y suponiendo que las condiciones de carrera nunca sucedan.