小编rwb*_*ogl的帖子

为什么Haskell使用mergesort而不是quicksort?

Wikibooks的Haskell中,有以下声明:

Data.List提供用于排序列表的排序功能.它不使用quicksort; 相反,它使用称为mergesort的算法的有效实现.

Haskell使用mergesort而不是quicksort的根本原因是什么?Quicksort通常具有更好的实际性能,但在这种情况下可能不是.我认为快速排序的现场好处很难(不可能?)与Haskell列表有关.

关于so​​ftwareengineering.SE一个相关的问题,但实际上并不是为什么使用 mergesort.

我自己实现了两种类型的分析.Mergesort是优越的(大约是2 ^ 20个元素列表的两倍),但我不确定我的quicksort实现是否最佳.

编辑:这是我的mergesort和quicksort的实现:

mergesort :: Ord a => [a] -> [a]
mergesort [] = []
mergesort [x] = [x]
mergesort l = merge (mergesort left) (mergesort right)
    where size = div (length l) 2
          (left, right) = splitAt size l

merge :: Ord a => [a] -> [a] -> [a]
merge ls [] = ls
merge [] vs = vs
merge first@(l:ls) …
Run Code Online (Sandbox Code Playgroud)

sorting performance haskell

62
推荐指数
3
解决办法
3508
查看次数

matplotlib中无需点击即可获取鼠标坐标

在 matplotlib 图中,如何在鼠标移动时连续读取鼠标的坐标,而不等待点击?这在matlab中是可能的,并且有一个mpld3 插件几乎可以完全满足我的要求,但我不知道如何实际访问它的坐标。还有包mpldatacursor,但这似乎需要点击。搜索“matplotlib鼠标坐标无需点击”之类的内容没有得到答案。

使用 mpld3 等附加包的答案很好,但似乎纯 matplotlib 解决方案应该是可能的。

python matplotlib

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

haskell ×1

matplotlib ×1

performance ×1

python ×1

sorting ×1