什么是算法——算法其实就是解决问题的方法
1、累加法:一个一个的加(1+2+3+4+...+1000)
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)
viod 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
viod fun(int n){
int i = 0;
while(i*i*i<n){
i + +;
}
}
1、 i=0;
2 i=1;
3 i=2;
4 i=3;
.....
y i=(y+1)
(y-1)*(y-1)*(y-1) = n
y^3 = n
y = n^1/3
C.O(3√n)