Sleep Sort est un algorithme de tri de nombres entiers que j'ai trouvé sur Internet. Il ouvre un flux de sortie et, pour chaque numéro d'entrée en parallèle, retarde le nombre de secondes et génère ce nombre. En raison des retards, le nombre le plus élevé sera affiché en dernier. J’estime qu’il a O (n + m), où n est le nombre d’éléments et m le nombre le plus élevé.
Voici le code original dans Bash
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
Voici le pseudocode
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
Votre tâche consiste à implémenter Sleep Sleep en tant que fonction dans le langage de programmation de votre choix. Vous pouvez négliger les facteurs de concurrence tels que les conditions de concurrence et ne jamais verrouiller les ressources partagées. Le code le plus court gagne. La définition de la fonction compte pour la longueur du code.
La liste de saisie est limitée à des entiers non négatifs uniquement, et la longueur de la liste de saisie devrait être raisonnablement longue (testez au moins 10 nombres), de sorte que des conditions de concurrence ne se produisent jamais. et en supposant que les conditions de course ne se produisent jamais.