它来自Rod Stephens的Essentials Algorithms。
假设我们有2种算法可以在1500N和30N * N的情况下解决相同的任务,那么该算法是什么?何时使用?
答案是,如果N小于或等于50,我们更喜欢使用1500N算法,而当N大于50时,我们更喜欢使用30N * N算法。
所以,问题是我们为什么要像这样使用它们?假设N为2,则1500N将比30N * N慢,因为3000大于120,因此当N小于50时第二种算法更快。我在这里遗漏了什么?并不是说书中的答案是错误的吗?
答案 0 :(得分:3)
的确,答案似乎已经交换了备选方案。当 n 小于50时, O(n * n)算法会更快。如果该值小于 O(n),则首选大于50,或者无法预测 n 的值。普遍观察到,随着 n 的增加,big-oh指数的较低值将更好地缩放。
Errata page for the book已经注意到此错误(附录B,第488页)。