如何找到 big-oh 运行 插入最小堆的时间?

How to find big-oh running time of inserting into a min heap?

我有以下问题:

"使用大O符号,给出插入整数1的运行时间, 2, 3, · · · , n 以 1, 2, 3, · · · , n. 的顺序进入最初为空的最小堆。

"使用大O符号,给出插入整数1的运行时间, 2, 3, · · · , n 以 n, n-1, n-2,...2, 1 的顺序进入最初为空的最小堆。

》用大O表示法,给出运行次插入整数1,2,3,···,2n的顺序为1,n+1,2,n+2,3 , n+3, · · · , n−1, 2n−1, n, 2n. 例如,如果 n = 4,则顺序为 插入将是 1、5、2、6、3、7、4、8。"

我该如何解决这些问题?有没有一种简单的方法可以根据插入的内容确定 运行 time/big 哦符号?

对于最小堆,您将新元素添加到堆的末尾,如果它小于父元素,则将其向上推,因此:

  1. 你每次添加更大的元素所以你不会推任何东西所以每次你做 O(1),总的来说是 n*O(1)
  2. 你每次添加之前在堆上的更小的元素,所以你需要将它冒泡到峰值,所以每次执行 O(log n),所以整体是 n*O(log n)。
  3. 在最后一个例子中,你结合了案例 1 和案例 2,所以一旦你执行 O(logn) insretion 和一次 O(1),所以总体是这样的:n/2*O(logn) + n/2*O(1).