簡體   English   中英

haskell快速排序復雜性?

[英]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的清單也不是那么大,所以:

  1. 我怎么能處理數十億的數據?
  2. 是這種排序算法(合並和排序)花費更少的時間在其他語言,如C#,python ...這是一個haskell語言的問題
  3. 如何使用其復雜性預測算法的運行時間?

快速排序的最壞情況時間是n 2 您的實現使用第一個元素作為數據透視表,當輸入被排序(或反向排序)時,會導致最壞情況的性能。

要使快速排序以n log n的預期復雜度執行,您需要隨機選擇樞軸,或者在排序之前隨機調整輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM