如何找到 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 哦符号?
对于最小堆,您将新元素添加到堆的末尾,如果它小于父元素,则将其向上推,因此:
- 你每次添加更大的元素所以你不会推任何东西所以每次你做 O(1),总的来说是 n*O(1)
- 你每次添加之前在堆上的更小的元素,所以你需要将它冒泡到峰值,所以每次执行 O(log n),所以整体是 n*O(log n)。
- 在最后一个例子中,你结合了案例 1 和案例 2,所以一旦你执行 O(logn) insretion 和一次 O(1),所以总体是这样的:n/2*O(logn) + n/2*O(1).
我有以下问题:
"使用大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 哦符号?
对于最小堆,您将新元素添加到堆的末尾,如果它小于父元素,则将其向上推,因此:
- 你每次添加更大的元素所以你不会推任何东西所以每次你做 O(1),总的来说是 n*O(1)
- 你每次添加之前在堆上的更小的元素,所以你需要将它冒泡到峰值,所以每次执行 O(log n),所以整体是 n*O(log n)。
- 在最后一个例子中,你结合了案例 1 和案例 2,所以一旦你执行 O(logn) insretion 和一次 O(1),所以总体是这样的:n/2*O(logn) + n/2*O(1).