算法就是解决问题的方法
列:1+2+3+4+5+6......
解1:累加法一个个加
解2: 利用等差数列求和公式
如何评判算法的优劣性?
通过时间复杂度
算法时间复杂度如何计算出来?
时间复杂度是研究数据总量n和算法执行次数y之间的关系(算法评判好坏的标准)
1.y=an+b(a是系数,b是常数)如果n非常大---y=n(算法执行次数和数据总量直接相关)---O(n)
2.y=an*2+bn+c(ab是系数,c是常数)如果n非常大---y=n*2(算法执行次数和数据总量的算法直接相关)---O(n)
3.y=a(a是常数)--算法的执行次数和总量没有任何关系---O(1)
4.y=logn----算法的执行次数和数据总量存在log别的关系-----O(logn)
列void
fun(int n){int i = 1;
while(i<n){
i=i*2;}}
解:
1.i = 1
2.i = 2
3.i= 4
4.i=8
5.i= 16
第y轮:i= 2^(y-1)=n
2^y=n------y=log2n