归并排序的问题

nkorange 2011-07-20 09:35:39
我们在归并两个有序数组的时候,当然时间复杂度是O(m+n),那么能不能改进归并过程使得比较次数减小呢?
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cougar0709 2011-07-27
  • 打赏
  • 举报
回复
算法确定了,时间复杂度是一定的,你可以参考算法导论
Golden_Shadow 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nkorange 的回复:]

N是多少啊?

引用 3 楼 golden_shadow 的回复:

N = m n. O(N).据我目前所知,作任何额外的处理都会大于这个复杂度。
[/Quote]少打了个'+'。
Golden_Shadow 2011-07-25
  • 打赏
  • 举报
回复
N = m n. O(N).据我目前所知,作任何额外的处理都会大于这个复杂度。
fengjian_428 2011-07-25
  • 打赏
  • 举报
回复
比较次数并不一定是m+n 时间复杂度看做O(N)就够了

如果m远远大于n 可以考虑用二分查找进行排序
比如m为100万 n为100 归并排序的话复杂度为100万
如果二分查找复杂度为100×lg100万=2000
大大减小了时间复杂度
皮熊熊 2011-07-25
  • 打赏
  • 举报
回复
m+n应该是最少的了吧,因为两个数列中任意两个数ai和bi如果不比较的话无法谁知道谁大谁小啊,不知道大小关系就没有办法排序了
nkorange 2011-07-25
  • 打赏
  • 举报
回复
N是多少啊?

[Quote=引用 3 楼 golden_shadow 的回复:]

N = m n. O(N).据我目前所知,作任何额外的处理都会大于这个复杂度。
[/Quote]
nkorange 2011-07-22
  • 打赏
  • 举报
回复
不明白你的意思,我的意思是给定两个长度分别为m和n的有序数组,将这两个数组归并成一个有序数组。通常情况下要O(m+n)次比较,我想知道是否能让比较次数减少?

[Quote=引用 1 楼 kenyyy 的回复:]

我觉得你可以去证明一下,好像每次一半已经是最优的了。。。
至少,对于4个长度为a的数组。
a+a + 2a+a + 3a+a > a+a + a+a + 2a+2a.
[/Quote]
kenyyy 2011-07-20
  • 打赏
  • 举报
回复
我觉得你可以去证明一下,好像每次一半已经是最优的了。。。
至少,对于4个长度为a的数组。
a+a + 2a+a + 3a+a > a+a + a+a + 2a+2a.

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧