归并排序法的复杂度计算
老师,
这节课上PPT中的数组长度是8个元素,然后时间复杂度是这样算吧?
O(nlogn) = 8*(log2(8)+1) = 8*4 = 32
常数不算,这样计算也可以是吗?
8*log2(8) = 24
n=10的话
10 * log2(10)= 10*3.3=33
3
收起
正在回答 回答被采纳积分+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 星