(解决问题的方法)
用来描述如何进行数据处理,计算等操作,然后解决问题的方法叫做算法。
如何评判算法的优劣 :
通过时间复杂度进行判断。
时间复杂度是如何进行计算的:
时间复杂度:研究数据总量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)
例:
word fun(int n){
int = 1;
while(i < n){
i ++;
}
}
第一轮:i= 1
第二轮:i= 2
第三轮:i= 4
第四轮:i= 8
......
第y轮:i= 2^(y-1) = n
2^y = n-------y = log2n
所以时间复杂度为O=(logn)
例:
word fun(int n){
int = 0;
while(i*i*i < n){
i ++;
}
}
第一轮:i= 0
第二轮:i = 1
第三轮:i = 2
第四轮:i= 3
第y轮:i= (y - 1)
(y - 1)*(y - 1)*(y - 1) = n
y^3 = n
y = n^1/3
所以时间复杂度为:O(n^1/3)
例:
X = 2:
while(x<n/2){
x = x * 2;
}
第一轮:2
第二轮:4
第三轮:8
第四轮:16
第y轮:x = 2^y
y = log2n
所以时间复杂度为log2n
例:
i= 1;k = 0
while(i<n-1);{
i++
}
第一轮:i= 1
第二轮:i= 2
第三轮:i=3
第y轮:i= y
y=n-1
所以时间复杂度为:O(n)