快速排序 + 分析

Posted

技术标签:

【中文标题】快速排序 + 分析【英文标题】:Quicksort + Profiling 【发布时间】:2010-04-10 14:23:26 【问题描述】:

我正在尝试分析快速排序代码。代码如下:

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

请帮帮我!

【问题讨论】:

这是一个非常标准的 Haskell 快速排序。你检查过文档和维基吗? haskell.org/ghc/docs/latest/html/users_guide/profiling.htmlhaskell.org/haskellwiki/How_to_profile_a_Haskell_program 【参考方案1】:

假设您使用 GHC,您可以使用 -prof 标志启用分析(可能是 -auto-all-caf-all 以获得更多详细信息)。

然后您使用./a.out +RTS -p 运行程序以在a.out.prof 中生成分析结果。

配置文件仅包括在每个函数上花费的总时间和内存。这可能不适合您,因为只有一个功能qsort。正常编译程序运行./a.out +RTS -sstderr可能已经有足够的信息了。

http://www.haskell.org/ghc/docs/latest/html/users_guide/profiling.html 了解 GHC 中的更多分析选项。 http://book.realworldhaskell.org/read/profiling-and-optimization.html 了解如何分析配置文件信息。

【讨论】:

以上是关于快速排序 + 分析的主要内容,如果未能解决你的问题,请参考以下文章

快速排序复杂度分析

快速排序 + 分析

细致分析快速排序!

算法设计与分析分治法--快速排序的递归和非递归实现

快速排序的分析与实现

选择排序快速排序插入排序等经典八大算法稳定性分析