数据结构就是指一组数据的存储结构。
算法就是操作数据的一组方法。
算法:累加法(一个一个的加);利用等差数列求和公式直接算出答案。
如何评判算法的优劣————————通过时间复杂度来进行判别
时间复杂度是如何计算出来的???
时间复杂度是研究数据总量x和算法执行次数y之间的关系
y = an +b(a是系数,b是常数)如果n非常大----->y=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){ 时间复杂度是研究数据总量x和算法执行次数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)
O(logn) 2^y=n----------->y=log2n
C.O(3√n) (y-1)*(y-1)=n
y^3 = n
x = 2: 第一轮: x = 2
while(x<n/2){ 第二轮 :x = 4
x=x*2; 第三轮: x = 8
} 第四轮: x = 16
..............
第y轮: x= 2^y
2^y = n-----------y=log2n
x = 0 第一轮:x=0
while(n>(x+1)*(x+1)){ 第二轮 :x=1
x = x +1; 第三轮 : x=2
} ....
第y轮 : x = y-1
y*y = n
y= O(√n)
i = 1;k=0; 第一轮 : i = 1
while(i<n-1){ 第二轮 : i = 2
k = k+10*i; 第三轮 : i= 3
i++; .......
} y: i = y O(n)