简单的基于堆的数组函数的复杂性特征

时间:2014-11-09 20:24:31

标签: algorithm time-complexity space-complexity binary-heap code-complexity

我有一个简单的算法任务,我想练习我的复杂性分析,我希望得到一些确认,我是正确的。

任务是;实现一个函数,该函数采用大小为n的数字数组,并返回k个最高值。实施应该节省时间和空间。

这是我的伪代码:

  1. 创建大小为k + 1的二进制最小堆。
  2. 对于数组中的每个数字;
    • 将值推送到堆上。
    • 如果堆大小现在大于k,则弹出最小值。
  3. 弹出堆中的所有值并返回结果数组。
  4. 以下是每个步骤的时间复杂度分析:

    1. 可忽略。
    2. O(n)的
      • O(log n)
      • 忽略
    3. O(k)的
    4. 总复杂度应该是O(n.log n + k)? 空间复杂度应为O(k + 1)?

      此外,对我的方法的任何批评都欢迎。

      提前致谢!

0 个答案:

没有答案