上のいくつかのソートをHaskellで書いてみた
超適当。
-- 挿入ソート import Data.List insSort = foldr insert [] -- 選択ソート selSort [] = [] selSort xs = let min = minimum xs in [min] ++ selSort [x | x <- xs, x /= min] -- バブルソート(偽) bblSort [] = [] bblSort xs = let max = maximum xs in (bblSort [x | x <- xs, x /= max]) ++ [max] target = [5, 2, 4, 6, 3, 1, 0] main = do print $ insSort target print $ selSort target print $ bblSort target
バブルソートがバブルソートになってないのは置いとくとして、ビンソートってどう書けばいいんだ。
これをJava版と比べると、
アルゴリズム中にリテラルが出てこないのは、コードがアルゴリズムを素直に表していることの結果なんだろうけど、それにしてもすごい。
あー、Haskellをもっとまともに使えるようになりたい。