为什么Rust的sort方法分配内存?

ky

诸如sort_byonstd::slice::MutableSliceAllocatingsort_byon之类的collections::vec::Vec方法记录为“分配大约2 * n,其中n为长度”我不认为良好的C ++std::sort实现会在堆上分配资源,但是它们实现了相同的O(n log n)复杂度。尽管,Rust排序方法很稳定,与C ++ std :: sort不同。

为什么Rust排序方法分配?对我来说,这不适合此处宣传“零成本抽象”法案

弗雷德·富

如评论中所述,这是一种稳定的排序,需要O(n)空间才能执行。最佳O(n log n)稳定排序,mergesort需要大约½n个临时项。(我对Rust不熟悉,所以我不知道为什么它需要它的四倍。)

稳定的排序可以在O(log n)空间中实现,但只能通过需要O(nlog²n)时间的mergesort变体来实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Rust的sort方法分配内存?

来自分类Dev

为什么内存不分配?

来自分类Dev

什么是内存分配的最佳方法

来自分类Dev

什么是内存分配的最佳方法

来自分类Dev

为什么mmap无法分配内存?

来自分类Dev

为什么hGetBuf,hPutBuf等分配内存?

来自分类Dev

在C中,内存分配失败,为什么?

来自分类Dev

为什么不分配大量内存呢?

来自分类Dev

为什么在不使用堆栈内存时分配堆栈内存?

来自分类Dev

为什么我使用的内存多于分配的内存?

来自分类Dev

为什么从componentsSeparatedByString分配的内存从不分配

来自分类Dev

为什么Rust会重用相同值的内存

来自分类Dev

为什么重新分配小块内存时分配大块内存失败

来自分类Dev

为什么取消分配堆内存比分配堆内存要慢得多?

来自分类Dev

为什么这个Haskell程序分配这么多内存?

来自分类Dev

为什么编译器分配的内存超出了要求?

来自分类Dev

为什么在声明字符串时无需分配内存

来自分类Dev

为什么JVM分配的总内存大于-Xmx?

来自分类Dev

内存分配失败。但是为什么会崩溃?还是呢?

来自分类Dev

为什么我获得未分配内存的读写权限?

来自分类Dev

为什么连续调用new []不会分配连续内存?

来自分类Dev

为什么Java字符串在堆上分配了内存?

来自分类Dev

为什么Windows中重复的内存分配速度变慢?

来自分类Dev

为什么扫描停止工作(使用内存分配)?

来自分类Dev

为什么该程序分配的内存超出了必要?

来自分类Dev

为什么内存没有分配给数组?

来自分类Dev

为什么JVM分配的总内存大于-Xmx?

来自分类Dev

为什么将数组比为其分配的内存大?

来自分类Dev

为什么动态内存分配的规模不是线性的?

Related 相关文章

热门标签

归档