arrays - 将哈希表转换为 O(log(k)*k + n) 中的排序数组

标签 arrays algorithm performance sorting time

所以在我的数据结构讲座中,我被告知可以将具有 k 个键和 n 个元素的哈希表转换为分摊 O(log(k)*k + n) 的排序数组。但是,这背后没有任何理由。我发现有点困惑为什么我试图找到一个算法来做到这一点。

我想不出一个。我想它一定是众所周知的,因为我们只是在没有证据的情况下注意到它,但我找不到它。你知道这个问题的解决方案吗?

最佳答案

如果你的意思是按键排序,就是k*log(k)对键进行排序,n是根据排序后的键插入元素。因此 O(klog(k) + n)。算法是:

  1. 对键进行排序(可能在一个新数组中)
  2. 创建一个可容纳 n 个元素的空数组
  3. 迭代排序后的键数组并将每个键的所有元素插入新数组

第 1 步采用 O(klog(k)) 操作,第 3 步采用 O(n)。

关于arrays - 将哈希表转换为 O(log(k)*k + n) 中的排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41142626/

相关文章:

c++ - 圆是否相交

c - C 中的快速交错操作?

c - LeetCode 189 旋转数组 : heap-buffer-overflow

python - 在矩阵中找到最大值的索引(python)

Python:2 暗淡形状的数组 (1,1024) 被读取为 3 暗淡数组

javascript - 快速排序没有输出

java - 集合中的所有字符组合以创建字符串

c# - 分析为什么 WCF 比 WSE webservice 慢很多

performance - MS Entity Framework 4.1中的“模型优先”和“代码优先”之间是否存在性能差异?

performance - 为什么 Map 实现应该覆盖 foreach?