我正在学习算法,需要你们帮助我。如果我的问题不明确,我是初学者,请原谅我。 Whiles正在学习我正在看到类似NlogN,N ^ 2等的东西......以及类似的东西。
在使用这些符号检查不同算法的效率/性能时,我并不清楚。我非常了解对数,但它们在检查算法性能方面的使用方式让我很生气。
我在问是否有人可以指点我的教程,其中已经解释了这样的符号,以便我可以很好地掌握基础知识。我真的很想了解他们并愿意学习。
感谢您的帮助。
甲
答案 0 :(得分:4)
您所描述的内容称为big O notation。 Here是解释它的指南。
值得注意的一点是,符号忽略了无关紧要的术语。如果您的算法需要6X ^ 2 + 3X + 12秒执行,其中X是正在处理的数据点的数量,只需将其称为O(X ^ 2),因为当X变大时,6将无法真正发挥作用,也不会是3和12。
答案 1 :(得分:2)
购买Introduction to Algorithms。您可以以实惠的价格获得二手版本。
和/或查看来自麻省理工学院的这些great online video lectures围绕上述内容编写。
通过查看这些讲座,您将了解某些算法如何具有对数时间复杂度,而某些算法具有指数等等。
答案 2 :(得分:1)
这些只是函数,接收输入中的项目数,并返回完成算法所需的操作数(通常它们返回算法的限制因素,而不是特定函数..更多内容 - { {3}})。
答案 3 :(得分:0)
http://www.amazon.com/Structures-Algorithm-Analysis-Allen-Weiss/dp/0805390529是能够很好地解释算法的最佳书籍之一。
- 干杯
答案 4 :(得分:0)
你在谈论Big-O表示法。这种表示法是一种描述算法最差运行时间作为其输入大小的函数的方法。
O(n ^ 2)表示如果输入的大小为 n (例如其中包含n个元素的列表),则算法将需要n ^ 2次传递才能执行最糟糕的情况(Big-O是最糟糕的情况;还有其他符号表示最佳案例和平均情况)。如果你有一个嵌套在另一个中的for循环,并且都从1运行到 n ,就会发生这种情况。
O(nlogn)是类似的。它通常发生在遍历树结构(例如二叉树)时。
请注意,您可能永远不会看到像O(3n)这样的东西,因为对于非常大的n值,常数3并不重要,因此它将简化为O(n)。
其他许多人已经发布了很好的链接来阅读。