Ken*_*Ken 5 java time big-o analysis
以下是整数变量n的一些代码:
while (n > 0)
{
n = n/10; // Use integer division
}
Run Code Online (Sandbox Code Playgroud)
我试图找到这个循环的最坏情况时间分析.O(n)对我来说是新的,我遇到了困难.这不就是O(n)吗?
实际上该算法的复杂度为 O(log(n))。你正在除以 10(每次循环都去掉一个 0)。
一般来说,如果算法随 n 的大小线性缩放,则其复杂度为 O(n),但对于这一点,如果将 n 的大小增加 10 倍,则只需再进行一次迭代,而不是 10 倍的迭代次数。环形。
根据要求,这里有几个带有简短入门指南的网站。快速谷歌搜索会发现更多:
http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ http://www.daveperrett.com/articles/2010/12/07/comp-sci- 101-大o-表示法/