4
我運行下面的快速排序的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分鐘,它仍在運行!即使是一個100,000的列表並不是那麼大,所以:
- 我怎麼能處理數據十億的數據?這是一個在Haskell語言中的問題
- 我怎麼能預測一個算法的運行時間使用其複雜性?
第一個元素是一個可怕的樞軸選擇。此外,你的重複處理是完全錯誤的;樞軸的任何副本都進入「較小」和「較大」! – user2357112
快速排序就地!這不是快速排序。 – dotctor
如果不是唯一值,則還需要確保輸出中出現* all *個*符號。 – chepner