解决问题的方法
1+2+3+4+5+6+....+1000 = ?
[1]累加法
[2]利用等差数列求和公式直接算出答案
如何评价算法的优劣?=====>时间复杂度
时间复杂度是如何计算出来的?
时间复杂度是研究数据总量n和算法执行次数y之间的关系
y = an+b (a是系数,b是常数)如果n非常大-------y = n(算法执行次数和数据总量直接关系)---O(n)
y = an^2+bn+c(ab是系数,c是常数) 如果n非常大------y=n^2(算法执行次数和数据总量的平方直接关系)----O(n^2)
y = a (a是常数)算法的执行次数和数据总量没有关系----O(1)
y = logn(算法的执行次数和数据总量有log的关系)-------O(logn)
void fun (int n ){ 时间复杂度是研究:数据总量n和执行次数y之间的关系
int i = 1; 第一轮 i = 1
while(i<n){ 第二轮 i = 2
i = i*2; 第三轮 i = 4
} 第四轮 i = 8
} 第五轮 i = 16
……
第y轮 i = 2^(y-1) = n
O(logn) 2^y = n ---------------->y = log2n