首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Rust的排序方法分配内存?

为什么Rust的排序方法分配内存?
EN

Stack Overflow用户
提问于 2014-10-07 12:36:59
回答 2查看 991关注 0票数 2

sort_by on std::slice::MutableSliceAllocatingsort_by on collections::vec::Vec这样的方法被记录为“分配大约2* n,其中n是长度”。我不认为好的C++ std::sort实现(在堆上)分配,但它们完成了相同的O(n日志n)复杂性。不过,锈蚀排序方法与C++ std::sort不同,是稳定的。

为什么锈蚀排序方法要分配?对我来说,它不符合“零成本抽象”法案的广告这里

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-07 13:19:37

正如注释中所述,这是一个稳定的排序,它需要O(n)空间来执行。最好的O(n log n)稳定排序,合并,需要大约半个临时项目。(我对锈病并不熟悉,所以我不知道它为什么需要四倍于此。)

在O(log )空间中可以实现稳定的排序,但只能通过合并变体实现,这需要O(n Log 2 n)时间。

票数 7
EN

Stack Overflow用户

发布于 2015-04-25 08:42:54

我意识到这是一篇老文章,但我在谷歌上发现,流行的答案是错误的。实际上,使用O(1) (甚至不是日志)内存和最坏的O(nlogn)时间执行稳定的就地排序是可能的。例如,参见GrailSort或WikiSort。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26236185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档