算法时间复杂度是对算法效率的重要衡量标准。
人们说的事前分析估算算法效率,就是对算法时间复杂度的计算。我在看书过程中的一些小误解。在此记录。
举例。
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造成程序运行步骤的数学关系。