作为Haskell的练习,我试图实现heapsort。 堆通常以命令式语言实现为一个数组,但是在纯粹的函数式语言中这是非常低效的。 所以我研究过二进制堆,但是到目前为止我发现的一切都是从一个必要的观点来描述它们,所提出的algorithm很难转化为一个function设置。 如何高效地实现一个像Haskell这样的纯函数语言的堆? 编辑:效率我的意思是它应该仍然在O(N *日志),但它不必击败一个C程序。 另外,我想使用纯function编程。 在Haskell中做什么呢?
在学校,我们正在学习使用Java进行sortingalgorithm,而我的作业是堆sorting(Heap Sort)。 我做了自己的阅读,试图尽可能多地找出答案,但看来我无法理解这个概念。 我不是要求你给我写一个Java程序,如果你可以简单地向我解释一下堆分类是如何工作的。
堆分类sortingalgorithm似乎具有O(nlogn)的最坏情况复杂度,并使用O(1)空间进行sorting操作。 这似乎比大多数sortingalgorithm更好。 那么,为什么没有人总是使用堆sorting作为sortingalgorithm(以及为什么人们使用sorting机制,如合并sorting或快速sorting)? 另外,我也看到人们用Heapsorting来使用术语“不稳定性”。 这意味着什么?