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

时间:2016-12-14 12:26:00

标签: arrays algorithm performance sorting time

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 对键进行排序(可能在新数组中)
  2. 创建一个包含n个元素空间的空数组
  3. 遍历排序的键数组并插入新数组中每个键的所有元素
  4. 步骤1采用O(klog(k))操作,步骤3采用O(n)。