一、什么是数据结构和算法
1.什么是数据结构
5 | 7 | 6 | 2 | 0 | 3 | 1 | 4 |
5 | 7 | 6 | 2 | 9 | 0 | 3 | 1 | 4 |
5→7→6→2→0→3→1→4
5→7→6→2→9→0→3→1→4
之间在中间插入九的话需要在2和0之间插入,遗弃之前的数组随后生成一个数组并插入9,0向后移动一位。
2.什么是算法
算法就是解决问题的方法。
1+2+3+4+5+6+7+8+9...+1000 |
①累加法
②利用等差数列公式直接算出答案
3.如何评判算法的优劣
通过时间复杂度来进行判断
如何计算时间复杂度:时间复杂度是研究数据总量x和算法执行次数y之间的关系
①y=an+b如果n非常大,那么y=n。算法执行次数和数据总量相关......→O(n)
②y=an^2+bn+c,y=an^2......→O(n^2)
③y=a算法执行次数和算法的数据总量没有任何关系。......→O(1)
④y=logn算法的执行次数和数据总量存在log关系...........→O(logn)
1.void fun(int n)(
int i = 1; 第一轮 i =1
while(i<n)( 第二轮 i =2
i = i*2; 第三轮 i =3
) 第四轮 i =4
) 第y轮 i =2^(y-1)=n
2.void fun(int n)(
int i = 0; 第一轮 i =0
while(i*i*i<n)( 第二轮 i =1
i++; 第三轮 i =2
) 第四轮 i =3
) 第y轮i = (y-1)
(y-1)*(y-1)*(y-1)= n
y^3 = n
y = n*1/3
3. x = 2
while(x<n/2)( 第一轮 x =2
x = x*2; 第二轮 x =4
) 第三轮 x =8
第y轮 x =2^y
4.x = 0
while (n>(x+1)*(x+1)( 第一轮x = 0
x = x + 1; 第二轮x = 1
) 第三轮x = 3
第y轮 x = y-1
5.i = 1;k = 0
while(i<n-1)( 第一轮i= 1
k = k+10*i; 第二轮i=2
i++; 第三轮i=3
) 第y轮i=y
y = n-1