查看: 5249|回复: 14
收起左侧

google(1) 合并k个排序数组

  |只看干货 |刷题
头像被屏蔽

分享帖子到朋友圈
wwwyhx | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

上一篇:新人报道+加分贴
下一篇:google(2) M*N个方格的路径走法
头像被屏蔽
cldndx 2011-4-17 20:39:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-4-17 21:01:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ljfljf2006 2011-4-17 21:39:09 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (36)
 
 
0% (0)    👎
本帖最后由 Warald 于 2011-4-18 05:00 编辑

我们其实可以把这当成 归并排序 的一个中间状态 参考归并排序的操作即可知道该怎么做
举个例子 假设4个有序数组分别有 a b c d个数,那么先合并a+b,再合并c+d,最后把(a+b)和(c+d)合并。

如果有N个有序数组,总共有M个数,那么时间效率是M*lgN。极端情况是M=N,也就是每个有序数组都只有一个数,那么时间效率是N*lgN

评分

参与人数 1大米 +10 收起 理由
wwwyhx + 10

查看全部评分

回复

使用道具 举报

头像被屏蔽
cldndx 2011-4-17 21:57:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

法兰天蝎 2011-4-17 22:22:33 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (11)
 
 
0% (0)    👎
本帖最后由 Warald 于 2011-4-18 05:01 编辑

回复 4# ljfljf2006


    就是归并排序,很赞同,不过我费解这时间复杂度是怎么得来的呢。空间复杂度倒是theta(M),共M个元素的话
回复

使用道具 举报

法兰天蝎 2011-4-17 22:57:04 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (11)
 
 
0% (0)    👎
本帖最后由 Warald 于 2011-4-18 05:01 编辑

回复 4# ljfljf2006

嗯,时间复杂度我好像明白了,最坏情况应该是在子数组规模近似差不多大的时候M/N(这和分治恰好相反),不知道我想的对不对,请指教
回复

使用道具 举报

Imbalism 2011-4-17 23:24:30 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (42)
 
 
0% (0)    👎
本帖最后由 Warald 于 2011-4-18 05:01 编辑

回复 6# 法兰天蝎

归并排序想法是对的, 但是不好实现吧,优先级队列应该好实现点。
回复

使用道具 举报

头像被屏蔽
 楼主| wwwyhx 2011-4-17 23:39:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ajing 2011-4-18 02:51:00 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (70)
 
 
0% (0)    👎
本帖最后由 Warald 于 2011-4-18 05:02 编辑

回复 5# cldndx


    弱问一个。
    我不大明白这N个array怎么形成这个二叉堆,你是先让其中一个数列初始,再让其他的数列放进二叉堆?
     我觉得归并排序应该不会是最简单的,毕竟这N个数列已经排好了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

>
快速回复 返回顶部 返回列表