归并排序法的复杂度计算

归并排序法的复杂度计算

老师,

这节课上PPT中的数组长度是8个元素,然后时间复杂度是这样算吧?

 O(nlogn) = 8*(log2(8)+1) = 8*4 = 32


常数不算,这样计算也可以是吗?

8*log2(8) = 24


n=10的话

10 * log2(10)= 10*3.3=33



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2023-03-28 08:16:13

抱歉,这个问题系统没有给我自动提示,我今天查看慕课网的后台才看见。


==========


严格来讲,时间复杂度不是一个数字,时间复杂度就是一个表达式。归并排序的时间复杂度就是 O(nlogn)。因为时间复杂度表示的不是一恶搞算法的运行的具体时间(或者操作数),而是一个算法随着数据规模增大的增长趋势。所以,在复杂度分析中,不关注常数,因为常数不影响“增长趋势”。


当然,如果给定一个 n,你可以带进时间复杂度的式子中算出一个数字来,但是,要明白,这个数字是一个非常粗略的对这个算法的操作数的估计。如果去叙述的话,最好加上“级别”两个字;(说白了就是不准确)。


比如:

归并排序算法是 O(nlogn) 的算法,所以对于 n = 1000000,归并排序的操作数大概是 2 千万这个级别的;

插入排序算法是 O(n^2) 的算法,所以对于 n = 1000000,插入排序的操作数大概是 10000 亿这个级别的;


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
计算机基础课
  • 参与学习       233    人
  • 解答问题       159    个

1000位程序员+大厂HR联袂推荐,面向所有程序员的计算机核心知识体系,优惠中~

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师