【发布时间】:2015-05-25 04:35:57
【问题描述】:
除了克隆数组然后就地排序的原生方式之外,是否有更适合非破坏性排序的算法和现有实现?
需要在不更改源的情况下将浮点数组排序为新数组。我的搜索结果相当薄,因为大多数文献都集中在通过就地排序减少内存需求。
使用原生 sorted = [].slice().sort() 效果很好。这个问题是关于了解当内存约束被移除时是否还有其他性能排序实现,因为无论如何都需要一个新数组。
【问题讨论】:
-
“是否有任何现有的功能排序实现可用?” ---
[].slice().sort()怎么样? -
没有首选算法。这取决于你想如何使用它。我会选择
.slice().sort()。 -
可能值得对
.slice()的性能与创建新数组并单独推送元素进行微基准测试。这可能就是您列出的库不使用按顺序构建结果数组的算法的原因。 -
您可能应该解释一下您的意思是“更好的方法”;哪种方式更好?
-
如果您要求首选算法,您必须指定衡量它的标准:性能?最小内存使用量?对垃圾收集器的影响最小?最紧凑的代码?最容易理解?最常用的内置函数?不说衡量标准是什么,这个问题基本上没有意义,因为“首选”没有非常具体的上下文就没有意义。例如,如果您要在 5 个提交的首选算法中评判一场比赛,那么您衡量每个提交的确切量化标准是什么?
标签: javascript arrays sorting