はじめに
- ちょっとしたお勉強程度なので,特にコードにこだわりなし
- 基本,余計なライブラリなしの環境で実行できるプログラム
- これがquicksortかと言われれば,まぁちょっと違うかも
- いつか計測してみようかな...
- コメントあれば,お願いします
Haskell
qsort.hs
# haskell
qsort :: (Ord a) => [a] -> [a]
qsort [] = []
qsort (n:ns) =
let left = [a | a<-ns, a < n]
right = [a | a<-ns, a >= n]
in left ++ n ++ right
main = print $ qsort $ reverse [0..100]
Ruby
qsort.rb
# ruby
def qsort(ns)
return [] if ns.length < 1
left = ns.drop(1).select { |n| n < ns[0] }
right = ns.drop(1).select { |n| n >= ns[0] }
return qsort(left) + [ns[0]] + qsort(right)
end
ns = (0..100).to_a.reverse
p ns
p qsort(ns)
実際,ソートはこれなんでしょうけど
- 配列の乱数生成も楽だし,arrayクラスさまさまですね
sort.rb
ns = (0..100).to_a.shuffle
p ns.sort