Classificação do sono é um algoritmo de classificação inteira que eu encontrei na Internet. Ele abre um fluxo de saída e, para cada número de entrada em paralelo, atrasa o número segundos e gera esse número. Devido aos atrasos, o número mais alto será emitido por último. Estimo que tenha O (n + m), onde n é o número de elementos e m é o número mais alto.
Aqui está o código original no Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Aqui está o 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
Sua tarefa é implementar o Sleep Sort como uma função na linguagem de programação de sua escolha. Você pode negligenciar qualquer fator de simultaneidade, como condições de corrida, e nunca bloquear nenhum recurso compartilhado. O código mais curto vence. A definição da função conta para o comprimento do código.
A lista de entrada é limitada apenas a números inteiros não negativos, e o comprimento da lista de entrada deve ser razoavelmente longo (teste pelo menos 10 números) para que as condições da corrida nunca aconteçam. e assumindo que as condições da corrida nunca acontecem.