我被困在一个作业问题上。问题如下。
请考虑具有以下性能的四个程序-A,B,C和D。
如果每个程序需要10秒才能解决大小为1000的问题,请估计每个程序在问题大小增加到2000时所需的时间。
我非常确定O(n)会增加一倍到20秒,因为我们将大小加倍,这将代表Java中的一个循环,该循环重复n次。将n加倍会使输出加倍。但是我完全迷失在数字1、3和4上。
我不是在寻找这个问题的直接答案,而是希望有人愚弄我能找到答案的方式。也许可以通过解释这些Big O表示法在后端实际上在做什么。如果我了解算法的计算方式以及所有元素都适合某种方程式以解决时间的情况,那将是非常棒的。预先谢谢你。
我花了数周的时间梳理这本教科书,但这全都写得很复杂,我很难消化。在线视频也没有太大帮助。
答案 0 :(得分:2)
让我们举一个例子(您的列表中没有的那个例子):O(n ^ 3)。
问题大小之间的比例为2:2000/1000 = 2
。 big-O表示法给您一个估计,如果您遇到大小为n
的问题,那么大小为2n
的问题的复杂度将是... (2n)^3 = 8n^3
。这是原始任务的8倍。
我希望这会有所帮助。