算法基础知识
算法就是一种高效解决问题的技巧或者方法
在接下来的学习中,如果你要能看的懂算法,有一些知识点,你需要提前了解到
1、一些代数知识
1>、先来一个小案例,给定函数 f(x) = x * 2 。那么 f(5) 的值是多少呢?如果你的答案是10、那就ok
f(x)中的 x 代表自变量, f 代表因变量
x = 5
那么计算结果:x*2 = 5*2 = 10
2>、对数 ,的值是多少呢?如果你知道是 4、那就ok
在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然
如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作x=log。其中,a叫做对数的底数,N叫做真数
2*2*2*2 = 16
所以计算结果是 4
3>、幂运算:2^3 、2的3次方如果你算出来是 8 、那就ok
同底数幂相乘,底数不变,指数相加。同底数幂相除,底数不变,指数相减。幂的乘方,底数不变,指数相乘
4> 、阶乘运算:4! 、4的阶乘运算如果你算出来是 24、那就ok
阶乘是用来解决一些排列与组合问题
例如组合:有四个元素,6 4 2 1,写出这四个数能组成的两位数比如 62 12 42.......
n!=n×(n-1)×(n-2)×(n-3)×...×1
4! = 1*2*3*4 = 24
双阶乘表示方法:
(2n-1)!!
当n=2时,3!!=3×1=3
当n=3时,5!!=5×3×1=15
当n=4时,7!!=7×5×3×1=105
2、一些算法的表达方式
1> 如何表达算法的复杂程度?
# 如果我的通讯录里面有100个人,我要找其中一个,我可能需要100次才能命中它
那么此算法的复杂度是:O(100)
# 如果我的通讯录里面有1个人,我要找一个人的话,我需要1次命中它
那么此算法的复杂度是:O(1)
# 如果我的通讯录里面有100个人,我要用二叉树算法找一个人的话,我最多需要7次可以命中它。根据对数运算,2作底数,100作真数,计算出来的结果大约是7
那么此算法的复杂度是:O(7)
3、至少熟悉一门编程语言
可以是 c、js、java、php、python 因为用这些语言可以帮你把你的算法进行实现