boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个时间复杂度的问题,数组里取k个最大数
相关主题
问个算法题8
问一个merge k sorted array的问题
G家电面(已挂)
自己设计的一道面试题
说说4sum的复杂度吧
amazon 2nd phone interview
一道电面题
google面试问题
问两道微软题
算法题:min heap inplace变 BST
相关话题的讨论汇总
话题: logk话题: heap话题: 最大数话题: 复杂度话题: complexity
进入JobHunting版参与讨论
1 (共1页)
f****4
发帖数: 1359
1
如果用heap实现的话,这个时间复杂度怎么算?
O(n)? 还是O(n+n*logk)->O(n*logk)?
之前算时间复杂度,都是把程序各个部分需要run多少步加起来然后算big O
但是又看到说树遍历的是O(n)说是stack操作,不用计算时间复杂度,那如果是那样的
话,k个最大数就是O(n)
谁能解释一下,到底是那种算法?
谢谢
m*****g
发帖数: 226
2
用heap, 最佳 n, 最差 nlogn
f****4
发帖数: 1359
3
那最差的情况,为啥是nlogn?
能详细解释一下么? 还有,这个是O(nlogn)还是,就是nlogn?

【在 m*****g 的大作中提到】
: 用heap, 最佳 n, 最差 nlogn
k***e
发帖数: 556
4
linear selection

【在 f****4 的大作中提到】
: 如果用heap实现的话,这个时间复杂度怎么算?
: O(n)? 还是O(n+n*logk)->O(n*logk)?
: 之前算时间复杂度,都是把程序各个部分需要run多少步加起来然后算big O
: 但是又看到说树遍历的是O(n)说是stack操作,不用计算时间复杂度,那如果是那样的
: 话,k个最大数就是O(n)
: 谁能解释一下,到底是那种算法?
: 谢谢

f****4
发帖数: 1359
5
我知道我把哪搞混了,我写一下,有错的话,请指出来,谢谢
Time Complexity measures分 Best, worst and average
用具体操作的布数来衡量
Big O 给了一个 Upper and lower bounds on the complexity
所以,如果给问到Time Complexity就的列出在那种衡量方法下的布数之和
例如:k个最大数问题
最优,arr从大到小排序,heap不需要进行调整,前k个就是答案;所以操作步骤是n步
;最坏,arr从小到大排序,heap需要调整,步骤 n + n*logk
用big O的话是O(nlogk) <--这个还是不确定到底对不对

【在 m*****g 的大作中提到】
: 用heap, 最佳 n, 最差 nlogn
m*****g
发帖数: 226
6
我的理解,big O 是upper bound
theta O 才是上限和下限
所以O(n+nlgn) = O(nlgn)
对。那个应该是nlgk。这个是我不仔细。
s********l
发帖数: 998
7
我怎么觉得是n*logk呢
因为fix heap要logk 然后又有n个element~~

【在 f****4 的大作中提到】
: 如果用heap实现的话,这个时间复杂度怎么算?
: O(n)? 还是O(n+n*logk)->O(n*logk)?
: 之前算时间复杂度,都是把程序各个部分需要run多少步加起来然后算big O
: 但是又看到说树遍历的是O(n)说是stack操作,不用计算时间复杂度,那如果是那样的
: 话,k个最大数就是O(n)
: 谁能解释一下,到底是那种算法?
: 谢谢

D***h
发帖数: 183
8
用heap就是O(nlogk)
一般不明确说明的话,都是指最坏情况的。

我知道我把哪搞混了,我写一下,有错的话,请指出来,谢谢
Time Complexity measures分 Best, worst and average
用具体操作的布数来衡量
Big O 给了一个 Upper and lower bounds on the complexity
所以,如果给问到Time Complexity就的列出在那种衡量方法下的布数之和
例如:k个最大数问题
最优,arr从大到小排序,heap不需要进行调整,前k个就是答案;所以操作步骤是n步
;最坏,arr从小到大排序,heap需要调整,步骤 n + n*logk
用big O的话是O(nlogk) <--这个还是不确定到底对不对

【在 f****4 的大作中提到】
: 我知道我把哪搞混了,我写一下,有错的话,请指出来,谢谢
: Time Complexity measures分 Best, worst and average
: 用具体操作的布数来衡量
: Big O 给了一个 Upper and lower bounds on the complexity
: 所以,如果给问到Time Complexity就的列出在那种衡量方法下的布数之和
: 例如:k个最大数问题
: 最优,arr从大到小排序,heap不需要进行调整,前k个就是答案;所以操作步骤是n步
: ;最坏,arr从小到大排序,heap需要调整,步骤 n + n*logk
: 用big O的话是O(nlogk) <--这个还是不确定到底对不对

v******n
发帖数: 421
9
取k个不是klogn ?

【在 D***h 的大作中提到】
: 用heap就是O(nlogk)
: 一般不明确说明的话,都是指最坏情况的。
:
: 我知道我把哪搞混了,我写一下,有错的话,请指出来,谢谢
: Time Complexity measures分 Best, worst and average
: 用具体操作的布数来衡量
: Big O 给了一个 Upper and lower bounds on the complexity
: 所以,如果给问到Time Complexity就的列出在那种衡量方法下的布数之和
: 例如:k个最大数问题
: 最优,arr从大到小排序,heap不需要进行调整,前k个就是答案;所以操作步骤是n步

D***h
发帖数: 183
10
建大小为k的堆,每次操作是logk, n个元素,所以总共是O(nlogk).

【在 v******n 的大作中提到】
: 取k个不是klogn ?
相关主题
自己设计的一道面试题
说说4sum的复杂度吧
amazon 2nd phone interview
一道电面题
进入JobHunting版参与讨论
f****4
发帖数: 1359
11
多谢回复
s*******n
发帖数: 97
12
Yes....That is better....

【在 k***e 的大作中提到】
: linear selection
v******n
发帖数: 421
13
也可以建大小为 n 的堆,k 次 extract-min, O(n + k log n)
跟 O(k + n log k) 比较,要看 k 的数量级

【在 D***h 的大作中提到】
: 建大小为k的堆,每次操作是logk, n个元素,所以总共是O(nlogk).
b********h
发帖数: 119
14
建大小为n的堆需要nlog(n)的时间吧。

【在 v******n 的大作中提到】
: 也可以建大小为 n 的堆,k 次 extract-min, O(n + k log n)
: 跟 O(k + n log k) 比较,要看 k 的数量级

v******n
发帖数: 421
15
http://en.wikipedia.org/wiki/Binary_heap#Building_a_heap

【在 b********h 的大作中提到】
: 建大小为n的堆需要nlog(n)的时间吧。
m******e
发帖数: 64
16
klog(n) < n log k
1 (共1页)
进入JobHunting版参与讨论
相关主题
算法题:min heap inplace变 BST
merge k个数组怎样的方法好?
如何计算recursion的空间复杂度
TopK nearest points为啥用heap不用selection sort?
一个NxN矩阵每行每列都sort好,如何排序?
【什么时候需要做heap, 什么时候需要做BST】
g公司面试问Longest increasing subsequence,意义在哪里?
G家电面题目
问个算法题5
median of K sorted array
相关话题的讨论汇总
话题: logk话题: heap话题: 最大数话题: 复杂度话题: complexity