私は(マージアルゴリズムを並べ替える使用して)以下のクイックソートHaskellの機能を実行します。haskellクイックソートの複雑さ?
:qsort []=[]
qsort (x:xs) =
qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs , a<x ] -- edit
larger = [b | b <- xs , b>=x ]
データのビット大きな量のために、このためのランタイムをテストするために、私は以下のコードを実行します
qsort [100000,99999..0]
今のところ40分かかり、まだ走っています!たとえ10万のリストでさえそれほど大きいわけではありません:
- 10億のデータをどのように扱うことができますか?
- このソートアルゴリズム(マージとソート)は、C#、Pythonなどの他の言語では時間がかかりません...これはhaskell言語の問題です
- どのようにアルゴリズムの実行時間を予測することができますか?
最初の要素はピボットのひどい選択です。また、重複した処理は間違っています。ピボットの重複は、「より小さい」と「大きい」の両方に入ります! – user2357112
クイックソートはインプレースです!これはクイックソートではありません。 – dotctor
また、一意の値でない場合、 'x'の* all *が出現するようにする必要があります。 – chepner