やることは、
・配列の要素と同じ数のスレッドを作る。
・各スレッドは、1つの整数を受け取り、その時間だけsleepする。
・数字を返す。
wait() ==>> notifyAll() ==>> sleep() で実現したかったけど、やり方がよく分からない。
notifiAllしないと微妙に順番が変わる可能性がある? いや、したとしても、変わるか?
とりあえず、sleepする時間を10倍。
(defn sleep-sort [ a ] (if (not (empty? a)) (do (.start (Thread. (fn [] (Thread/sleep (* (first a) 10)) (println (first a))))) (sleep-sort (rest a))))) (sleep-sort '(6 1 2 3 7 4 8 9 5 0))参考サイト
4chan BBS – Genius sorting algorithm: Sleep sort
0 件のコメント :
コメントを投稿