[理工] 资结题库

楼主: silence0925 (小文青)   2018-11-20 21:44:44
https://i.imgur.com/kieT9XQ.jpg
如图 答案为什么不是D 麻烦大大们解惑
作者: nannnnn (nannnnn)   2018-11-20 22:45:00
内层循环大概是2i, 譬如说你带i=4进去,内层会做4+2+1大约为2*4,之后2(1+2+···+n)大概n^2
作者: skyHuan (Huan)   2018-11-20 22:55:00
楼主: silence0925 (小文青)   2018-11-21 17:45:00
抱歉s大 我还是不太懂 假如i=4时 goo不是只会跑3次吗 因为j=i=4 -> 2 ->1 三次 为什么你们会把他们加起来 那个数字是j等于多少跟次数没关系不是吗 麻烦大大解惑https://i.imgur.com/3rtnKG9.jpg
作者: skyHuan (Huan)   2018-11-21 18:14:00
因为j的循环要跑goo()题目说goo(m)复杂度是O(m)j你跑的4 -> 2 -> 1要把他都加起来大概就是1+2+2^2+... 共加log i次goo()的部分没有每次都跑到n,有至少一半的不到n,每次都用n算是nlogn会太大
作者: nannnnn (nannnnn)   2018-11-21 18:53:00
s大 n的次数 因该是取floor是吗,另外我是看成每次j的循环都会执行i当下丢进来的数值的两倍,所以可以写成summation i从1到n (2i)
作者: skyHuan (Huan)   2018-11-21 19:32:00
实际好像是logi取floor再多一次,但我会直接挑好算的数字算,少1多1好像不会影响复杂度XD
楼主: silence0925 (小文青)   2018-11-21 19:42:00
还是不太懂4 2 1为什么需要加起来 在I=4时 goo指呼叫了3次 而不是4+2+1次啊抱歉 比较笨想不太懂https://i.imgur.com/4ACN2cW.jpg
作者: nannnnn (nannnnn)   2018-11-21 19:53:00
因为题目有说goo是O(m)假设i为4的那一轮近来,总共会做goo(4),goo(2),goo(1)每次各花O(1),O(2),O(4)的时间,所以i=4的时候总共花了大概c*7,c为常数,以此类推i=5,6,7......加起来
楼主: silence0925 (小文青)   2018-11-21 20:00:00
原来如此 了解了 谢谢两位大大的解释

Links booklink

Contact Us: admin [ a t ] ucptt.com