24小时热门版块排行榜    

查看: 543  |  回复: 2

dameng

银虫 (小有名气)

[交流] 分享一个有意思的算法题,对复杂度分析感兴趣的可以看一下已有1人参与

Give an efficient algorithm to find the log n smallest elements in an n by n  
array of integers if it is known that the columns are in increasing order  
and the rows are in increasing order.
算法很简单,关键是找到复杂度最小的算法,
(越小的复杂度,分析起来越困难)

注意是前log n小的elements,不是第logn小的数。对于后者,典型的面试题,不知道讨论多少次了。

PS: 难道没有人对复杂度分析感兴趣吗?给个算法简单,关键是如何作出分析,得到更好的复杂度。
先抛砖引玉一个:只需要在左上角的logn*logn矩阵中搜索。建一个大小是logn的堆,深度为loglogn,每个元素代表某列的最小值。之后弹出堆顶元素,用堆顶代表行的下一个元素替换,并维护堆。复杂度logn*loglogn。因为只利用了列有序,肯定存在更好的算法。(其实这个问题是个牛人转的,据说存在很tricky的分析方法)

[ Last edited by dameng on 2013-11-7 at 16:33 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

研究方向:数据库。主要面向图数据管理、图数据挖掘、社会网络等。目前正在关注动态图算法。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yrlwsl

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
第n小数?是不是有一个快排的变种算法?
2楼2013-11-06 23:55:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dameng

银虫 (小有名气)

引用回帖:
2楼: Originally posted by yrlwsl at 2013-11-06 23:55:38
第n小数?是不是有一个快排的变种算法?

是前log n小的数。
研究方向:数据库。主要面向图数据管理、图数据挖掘、社会网络等。目前正在关注动态图算法。
3楼2013-11-07 11:46:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dameng 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见