1.什么是数据结构
2.什么是算法——解决问题的方法
————累加法:一个个的加
1+2+3+4+5+6+......+1000
————利用等差数列求和公式直接算出答案
如何评判算法的优劣————————————>通过时间复杂度来进行判别
算法的时间复杂度是如何计算出来的?
时间复杂度是研究数据总量n和算法执行次数y之间的关系
void fun(int n){ 第一轮 i = 1
int i = 1; 第二轮 i = 2
while(i<n){ 第三轮 i = 4
i = i*2; 第三轮 i = 8
} 第四轮 i = 16
} 第y轮:i = 2^(y-1) = n
2^y = n------------------->y = log2n
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){ 第1轮:i=0;
第2轮:i=1;
int i = 0; 第3轮:i=2;
white(i*i*i<n){ 第4轮:i=3;
i++; 第y轮:i=(y-1)
} (y-1)*(y-1)*(y-1)=n
y^3=n
} y=n^1/3
C.O(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=logn2n
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=?
i=1;k=0; 第一轮:i=1;
while(i<n-1){ 第二轮:i=2;
k=k+10*i; 第三轮:i=3;
i++ ......
} y:i=y
y=n-1