1)将以下效率从最小到最大重新排序:
2^n, n!, n^5, 10000, nlog2(n)
我的答案 - > 10000< nlog2(n)< n ^ 5< 2 ^ n< N!
正确吗?
2)算法的效率。是n ^ 3,如果这个算法中的一步。需要1纳秒。 (10 ^ -9秒)。算法需要多长时间。处理大小为1000的输入?
我不知道......是(1000)^ 3 * 10 ^ -9?
答案 0 :(得分:2)
问题一点没问题。问题二,我猜你的答案是他们正在寻找的,但如果你用n ^ 3表示O(n ^ 3),你实际上无法回答它(除非这是“算法效率”的用法我“我不熟悉。”
Big-O复杂度给出了算法行为的渐近约束。我们知道,对于“大”n,O(n ^ 3)大于在大小为n的输入上执行算法所花费的时间。请注意两个警告 - “大n”和“渐近界”。没有什么可以阻止大小1000的输入占用大小2000的输入的两倍,只要存在一些m,使得对于所有n> 1。 m,n ^ 3限制运行时。此外,没有什么可以阻止算法在每个输入上花费1纳秒,因为n ^ 3仍然是运行时的约束 - 它只是非常悲观。
这就是为什么大O符号在实际情况下通常用途有限的原因。它给出了一个公平的“最坏情况”概述,但没有说明任何给定的使用场景。对于一个更实用的(但经常被忽略的)复杂性类集,google为“Big theta”。
答案 1 :(得分:1)
两个答案都是正确的
答案 2 :(得分:1)
1)是的,这是正确的。
2)这也是正确的。尺寸分析:(1000 ^ 3步)* 10 ^( - 9)秒/步