📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 925| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

merge sort为什么递归到只剩1个或0个?如果递归到只剩2个呢

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
如果递归到只剩2个元素,会降低空间复杂度吗

上一篇:除了转码,有其他行业能谋生的么?
下一篇:USCPA培训班推荐 谢谢!
推荐
PacificDou 2022-1-31 10:18:37 | 只看该作者
全局:
本帖最后由 PacificDou 于 2022-1-31 10:26 编辑

两个元素可以直接比较大小,其结果只有  执行swap  或者  什么都不做。
时间空间复杂度都是不变的,给楼主画了一个递归调用的图,递归其实是向下分层,计算出最底层后再计算倒数第2层,然后倒数第3层,以此类推。
(不知道咋上传照片。。。相册不能使用,可能因为是新手吧。。。只能上传附件了)

每一层的元素个数都是O(n),所以也就决定了总的空间复杂度是O(n)。
每一层的时间复杂度都是O(n),总共有Logn层,所以时间复杂度是Logn * O(n) = O(nlogn)
两个元素直接返回,相当于去掉了倒数第一层,这样空间复杂度不变,时间复杂度为(Logn - 1) * O(n) = O(nlogn) 还是和原来一样。

Mergesort.pdf

56.31 KB, 下载次数: 0, 下载积分: 大米 -1 颗

Mergesort的递归图

回复

使用道具 举报

推荐
CarlMorgan 2022-1-27 23:18:44 | 只看该作者
全局:
Big O的定義是function裏面的dominating terms

n元素和n-1元素大家的dominating terms都是n
回复

使用道具 举报

全局:
可以,big O 复杂度不影响

楼主可以了解下 timsort,很多语言的内置 sort 都在用
回复

使用道具 举报

全局:
只剩两个,那两个怎么排序
回复

使用道具 举报

🔗
 楼主| 林林路 2022-1-27 05:30:16 | 只看该作者
全局:
fightingPhD 发表于 2022-1-26 16:12
只剩两个,那两个怎么排序

不调函数,排序后直接返回排序的结果。
回复

使用道具 举报

全局:
林林路 发表于 2022-01-26 13:30:16
不调函数,排序后直接返回排序的结果。
两个元素谁大谁小不知道,剩到两个可以用其他方法排序,再merge
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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