[英]haskell quick sort complexity?
我運行下面的快速排序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的清單也不是那么大,所以:
快速排序的最壞情況時間是n 2 。 您的實現使用第一個元素作為數據透視表,當輸入被排序(或反向排序)時,會導致最壞情況的性能。
要使快速排序以n log n的預期復雜度執行,您需要隨機選擇樞軸,或者在排序之前隨機調整輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.