如何改善 understand/calculate 运行时复杂度?
How to better understand/calculate runtime complexity?
我是一名大学新生,我们目前正在使用 Big O 研究运行时 complexity/worst-case 复杂性。我完全理解这个概念,我努力解决的问题是应用它并实际确定运行时复杂性某些算法。例如,在我自己的工作或实践中,我从未发现复杂度为 O(NlogN) 的算法,但它会在 quizzes/tests 中出现并烧毁我。关于如何提高我确定算法运行时复杂性的技能的任何提示?
如果你学习关于算法和数据结构的 CS 课程,你会遇到许多不同的算法及其复杂性。这将为您在“现实生活”中快速发现算法的复杂性打下良好的基础。
您特别提到了 O(N log N)。这实际上是分而治之算法中出现的一种非常常见的复杂性,该算法在递归列表的两半之前扫描列表中的所有项目,例如快速排序或合并排序。但它也经常出现在非递归代码中。这是一个伪代码复杂度为 O(n log n) 的简单示例:
function(int n):
for(int i = 0; i < n; i++)
print(i);
我是一名大学新生,我们目前正在使用 Big O 研究运行时 complexity/worst-case 复杂性。我完全理解这个概念,我努力解决的问题是应用它并实际确定运行时复杂性某些算法。例如,在我自己的工作或实践中,我从未发现复杂度为 O(NlogN) 的算法,但它会在 quizzes/tests 中出现并烧毁我。关于如何提高我确定算法运行时复杂性的技能的任何提示?
如果你学习关于算法和数据结构的 CS 课程,你会遇到许多不同的算法及其复杂性。这将为您在“现实生活”中快速发现算法的复杂性打下良好的基础。
您特别提到了 O(N log N)。这实际上是分而治之算法中出现的一种非常常见的复杂性,该算法在递归列表的两半之前扫描列表中的所有项目,例如快速排序或合并排序。但它也经常出现在非递归代码中。这是一个伪代码复杂度为 O(n log n) 的简单示例:
function(int n):
for(int i = 0; i < n; i++)
print(i);