[理工] 资结 时间复杂度

楼主: sooge (老衲)   2018-10-12 22:39:28
https://i.imgur.com/ZYTZ4ya.jpg
请问这题要如何下手 题目看不太懂....
答案就只给一个O(n^2)而已
拜托了
作者: tataTangQQ (TaTa)   2018-10-12 23:38:00
一个loop call funtion,function里也有一个loop
作者: befdawn (橙花雨露)   2018-10-12 23:48:00
后面还有题目吗?
作者: skyHuan (Huan)   2018-10-13 00:22:00
compute_value()副程式是O(k)主程式循环i从1开始跑到ni小于1000的时候是O(1)i很大的时候(超过1000)就是O(i)复杂度=1+1+...+1+1000+1001+1002+...+n=O(n^2)喔喔喔我看错题目,那还是一样在n很大的时候循环O(n)跑n次,所以O(n^2)复杂度是讨论n很大的时候。还有这题程式s没设初值跑应该会出错虽然跟这题无关XD
作者: befdawn (橙花雨露)   2018-10-13 14:16:00
请问s大(可惜这边不能直接tag哈哈),复杂度跟 input data 大小有关,是指 input 值大小吗?(这样是算 bits?)
作者: skyHuan (Huan)   2018-10-13 14:48:00
我说错了应该要说资料量大小影响到执行"次数",比如资料量是n,循环跑到n,资料量就有影响到复杂度,像上面test()函式如果只是算数"值"就不会影响复杂度int test(int k){ return k*k; } => O(1)int test(int k){for(i=0;i<k;i++) printf("hello!"); } => O(k)
作者: befdawn (橙花雨露)   2018-10-13 15:10:00
了解,谢谢s大解说

Links booklink

Contact Us: admin [ a t ] ucptt.com