GroovyでSleep Sortを実装する


常識を覆すソートアルゴリズム!その名も"sleep sort"!
Sleep sortの各言語での実装まとめ


Groovy版がなさそうなので、実装してみた。

ソース

/* 100ミリ秒の単位にしないと、スレッドを起こす処理の方が重くて
   正しくsortされなかった。
   スレッドを起こす時間の誤差がソートする対象の数とマシンスペックに
   依存するだろうな。
 */

def worker = { SleepTime ->
    Thread.sleep(SleepTime*100) 
     println SleepTime

}

args.each { SleepTime -> 
  Thread.start worker.curry(new Integer(SleepTime))
}

Groovy イン・アクションで、クロージャーのカリー化ってところを読んでたので、
ちょっと使ってみたかったのよ。

実行結果

[D:\workspace\groovy_SandBox]groovy SleepSort.groovy 5 1 3 4 2
1
2
3
4
5

実行環境

添削歓迎

ここ間違ってるよ
こうした方がGroovyらしくないか?
などなど
方法は、コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いしまます。


添削





Groovyの詳細についてはJavadocと以下の書籍を参考にしている。




Dierk Konig、Andrew Glover、Paul King、、Guillaume Laforge、Jon Skeet、杉浦 孝、櫻井 正樹、須江 信洋、関谷 和愛、佐野 徹郎、寺沢 尚史

Amazonでご確認ください。