【发布时间】:2021-06-01 16:27:50
【问题描述】:
我认为这是重复的,但我找不到。
假设我们有一个数组,我们知道每个值都是唯一的,并且每个值都在一个范围之间。例如,假设我们知道数组由 0 到 100 之间的唯一值组成。示例:
[ 5, 46, 15, 83, 55, 28 ]
然后我想将此数组排序为以下内容:
[ 5, 15, 28, 46, 55, 83 ]
显然我可以只使用快速排序或任何其他比较排序,但那将是O(n log n)。也存在非比较排序,例如基数排序、桶排序、计数排序等,但据我所知,这些排序都没有保持值必须唯一的约束。
通常情况下,您允许的约束越多,您的算法就越高效。是否有任何算法对唯一的有界数组更有效?如果不是,哪种非比较排序算法对这种类型的数据集最有效?
【问题讨论】:
-
我不知道使用什么算法对键进行排序,但
Object.keys( arr.reduce( (o,v) => { o[ v ] = null; return o; }, {} ) )可能值得一试。
标签: javascript arrays performance sorting unique