算法积累之算法时间复杂度

算法时间复杂度是对算法效率的重要衡量标准。

人们说的事前分析估算算法效率,就是对算法时间复杂度的计算。我在看书过程中的一些小误解。在此记录。

 

举例。

int sum = 0,n = 100;

sum = (1+n)*n/2;

printf("%d",sum);

这个算法程序总共走了三步

书上说明这是常数阶,而我却认为是平方阶 

我说(1+n)*n/2 不就等于 n/2+n2/2么

根据求大O 的方法 这应该是n2才对。后来一琢磨才发现。这是不对的,因为规模n压根就没有影响程序运行步骤。

再看一下线性阶来理解下

int i;

int j;

for(i = 0; i < n; i++){

  j += j+i;

}

分析 for循环里面的时间复杂度为O(1);

加上for呢,就是O(n*1)

这里n增大一1 那么运行步骤就要多一步,所以从这里可以分析出,时间复杂度实际上是说规模n造成程序运行步骤的数学关系。

 

posted @ 2014-10-22 00:15  鱼尾纹  阅读(201)  评论(0编辑  收藏  举报