以下是整数变量n的一些代码:
while (n > 0)
{
n = n/10; // Use integer division
}
我试图找到这个循环的最坏情况时间分析。 O(n)对我来说是新的,我遇到了困难。这不就是O(n)吗?
答案 0 :(得分:4)
实际上该算法将是O(log(n))。你除以10(每次通过循环敲掉0)。
一般来说,算法是O(n),如果它与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-big-o-notation/