上へ  前へ  次へ

Darkside of the Haskell -- 副作用版 クイックソート

 Haskell ではクイックソートが簡単に実装出来ることで有名ですが、その アルゴリズムは実は C や Java での実装と違っていたりします。ここでは、 C や Java と同じアルゴリズムを用いた副作用版のクイックソートを実装して みましょう。もち、純粋関数型版より高速になります。

STQuickSort1.hs

 partition は副作用で as を変更するだけで なく、戻り値として系列の分割位置を返します。ただし、戻り値は ST モナドに 包まれていますので、受け取るには(<-)演算子を使います。 unsafeSwap as i j は可変配列 asi 番目の要素と j 番目の要素を入れ替えます。


上へ  前へ  次へ